Most of July was spend on integrating version control with the existing
functionality. Adding more functionality has the problem of making the
use of A-A-P more complex. Therefore an attempt has been done to make
the functionality related to uploading and downloading more consistent.
Fortunately, the version control fits in there quite nicely. For
example, "aap refresh" is now used to obtain a fresh version of a
project, no matter what method is used to obtain the files. The recipe
specifies whether to use ftp, http, scp or CVS with the "refresh"
attribute. Other methods can be added later without much effort. The
command ":refresh" can be used to download a specific file and
":refreshall" to download all outdated files. Also see design decision
17:
http://www.a-a-p.org/decisions.html#17. This consistent naming also
applies to "publish" for uploading. For version control the "commit"
attribute is used for several commands and targets, such as "checkout",
"unlock" and "tag". This consistency makes it easier to remember the
various targets and commands.
The version control functionality has been implemented for CVS. It has
been tested by using it for A-A-P itself. The files are now distributed
by CVS, using a recipe. Checking out the project from CVS and updating
for a new version can be done with a simple recipe, a one-liner if you
really want (see
http://www.a-a-p.org/docs_recipe.html#cvs for an
example). The CVS-specific stuff has been put in a separate module.
It should be possible to implement version control for another system by
adding a module for it. That remains to be tried out though, mainly
because CVS doesn't do file locking while most other version control
systems do lock files.
With all these new attributes a recipe starts to look cluttered. I
added the ":attribute" command to be able to separate specifying the
files and the attributes. This makes it possible to separate the build
dependencies from specifying the upload and download attributes. That
looks much better without adding a new mechanism, just one extra command.
Uploading has also been made simpler. "aap publish" takes a list of
files and uploads the files that have been modified. The recipe for
this can be as short as two lines. This is now used to publish the
A-A-P and Vim web pages (see
http://www.a-a-p.org/docs_recipe.html#publish for an example). For this
to work a few problems with scp and remembering signatures had to be
solved. Fortunately this had hardly any effect on the recipe syntax:
only added the "signdirectory" attribute to be used for exceptional
situations (design decision 16).
Gradually the program becomes more robust. A log is now kept for the
last ten invocations, so that it is possible to find out what happened.
The log contains more messages than the output to the screen. This can
be used to figure out problems in the recipe and bugs in the program.
Thus it's both useful for end users and for A-A-P developers.
Current work is the Issue tracker wrapper. This is supposed to make it
easy to submit a bug report. Not an easy subject, since it appears
issue trackers are very different, and web-based ones require manual
entry by the user. Supplying a text with instructions and what to fill
in which field seems the best to do. But then viewing this text isn't
simple either, since there is a wide choice of text viewers. Starting a
web browser with the URL of the issue tracker is useful, but this isn't
obvious either (except on MS-Windows).
Work and progress in July related to the original plan:
- Two weeks of work on the version control wrapper. Done enough for
version 0.1, just like the plan.
- A couple of days spent on design; Not all of the planned two weeks
have been used up, this appears to go as planned.
- Half a week of work on the recipe syntax, two of the planned three
weeks done. Leaves a week for cleaning up and writing down the
syntax.
- A week spent on the recipe executive: all of the planned six weeks
have been used now, but there is still some work to be done.
- Half a week of work on the issue tracker, it's about halfway done.
Might take a few days more than the planned week.
The original plan was to bring out a version 0.1 by the end of August.
The work remaining to be done for this (as planned):
- The cross referencer: Nothing done yet, 4 weeks planned.
- GUI IDE: Nothing done yet, 4 weeks planned.
- User documentation: Some pieces done, needs to be structured.
Unfortunately, the volunteers that were working on the cross referencer
and the GUI IDE have not produced anything usable yet. Waiting for them
to produce results makes the 0.1 release date highly uncertain. And the
0.1 release is needed to get people interested in helping A-A-P
development. To get out of this deadlock I will do a minimal amount of
work on the recipe syntax part of the cross referencer and the GUI IDE.
This means taking a risc on whether this can be done without fully
exploring the issues involved. It's possible that the recipe syntax has
to be adjusted later. Considering the stability of the recipe syntax so
far, this risc is small enough to take now.
Thus August will include these activities:
- Finish the issue tracker wrapper in a few days.
- Spend a week on the interface to the cross referencer.
- Spend a week on the interface to the GUI IDE
- Make the documentation ready for version 0.1. Also functions as a
test if the functionality is easy to explain.
- Do enough testing and bug fixes to be able to release version 0.1.
Do a "proof of concept" for an application (e.g. Vim).
With a bit of luck version 0.1 will be ready by the end of August and
stable enough to be useful. A bit of promotion needs to be done then.
Hopefully this results in feedback and discussions about the choices.
For September packages and ports are to be worked on. This isn't in the
original plan and was added because of the feedback from the poster
presentation at SANE and the work for the upcoming presentation at
FreeBSDcon in November about using A-A-P for BSD ports.
--
From "know your smileys":
!-| I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth
/// Bram Moolenaar --
Bram@... --
http://www.moolenaar.net \\\
/// Creator of Vim --
http://vim.sf.net --
ftp://ftp.vim.org/pub/vim \\\
\\\ Project leader for A-A-P --
http://www.a-a-p.org ///
\\\ Lord Of The Rings helps Uganda -
http://iccf-holland.org/lotr.html ///