Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-19 Thread Andre Poenitz
On Wed, Mar 19, 2003 at 03:00:01PM +0100, Jean-Marc Lasgouttes wrote:
> You are lucky. I tried it with emacs-20.4/gnus-5.8.6, and it
> definitely did not work. What does this copiousoutput means, actually?

man mailcap
/copious
n

   copiousoutput
   This flag should be given whenever the interpreter
   is  capable  of producing more than a few lines of
   output on stdout, and does no interaction with the
   user.   If the mailcap entry specifies copiousout-
   put, and pagination has  been  requested  via  the
   "-p" command, then the output of the command being
   executed will be piped through a  pagination  pro-
   gram  ("more" by default, but this can be overrid-
   den with the METAMAIL_PAGER environment variable).

Andre'

-- 
Those who desire to give up Freedom in order to gain Security,
will not have, nor do they deserve, either one. (T. Jefferson)


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-19 Thread Jean-Marc Lasgouttes
> "John" == John Levon <[EMAIL PROTECTED]> writes:

John> On Mon, Mar 17, 2003 at 09:46:04AM +, Jos? Matos wrote:
>> This is what I have in .mailcap and that is relevant:
>> application/x-gunzip; zcat; copiousoutput application/x-gzip; zcat;
>> copiousoutput application/x-bzip2; bzcat; copiousoutput
>> application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput

John> Hmm, that works quite well, thanks john

You are lucky. I tried it with emacs-20.4/gnus-5.8.6, and it
definitely did not work. What does this copiousoutput means, actually?

JMarc


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-19 Thread John Levon
On Mon, Mar 17, 2003 at 09:46:04AM +, Jos?  Matos wrote:

>   This is what I have in .mailcap and that is relevant:
> application/x-gunzip;   zcat; copiousoutput
> application/x-gzip; zcat; copiousoutput
> application/x-bzip2; bzcat; copiousoutput
> application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput

Hmm, that works quite well, thanks
john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-17 Thread José Matos
On Saturday 15 March 2003 17:43, John Levon wrote:
> On Sat, Mar 15, 2003 at 11:50:28AM -0500, Kuba Ober wrote:
> > That means you didn't configure your mail reader properly. It should be
> > easy to do. What mail reader do you use?
>
> mutt

  Then you should follow André's advice. I use mutt and or kmail, for 
different purposes and I don't have any of the problems you refer to.

  This is what I have in .mailcap and that is relevant:
application/x-gunzip;   zcat; copiousoutput
application/x-gzip; zcat; copiousoutput
application/x-bzip2; bzcat; copiousoutput
application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput

> john

-- 
José Abílio


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-15 Thread John Levon
On Sat, Mar 15, 2003 at 11:50:28AM -0500, Kuba Ober wrote:

> That means you didn't configure your mail reader properly. It should be easy 
> to do. What mail reader do you use?

mutt

> But that's not the point. The point is that there's no reason methinks to have 
> patches sent via mail. As soon as a change is up for review, it's up for 
> review and then anybody who fancies may review it.

I don't see a good  reason to enforce some arbitrary difference between
an individual looking at a patch and a discussion about the patch.

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-15 Thread Kuba Ober
> > But why do you expect to be able to do everything in your mail reader?
>
> I expect to be able to read things I am sent in my mail reader. I expect
> to able to pick out parts of patch and reply with them quoted saying
> why I don't like the parts. I would like to able to do this without the
> following process :
>
> Save the attachment
> scp the file to my home box
> gunzip the attachment
> copy and paste all the relevant parts back to my mail reader
>
> Which is what I have to undergo now.

That means you didn't configure your mail reader properly. It should be easy 
to do. What mail reader do you use?

But that's not the point. The point is that there's no reason methinks to have 
patches sent via mail. As soon as a change is up for review, it's up for 
review and then anybody who fancies may review it.

And even if a change is in the process, it's equally trivial to send the patch 
to the mailing list:

cat `find . -type f \( -name "*,D" -o -name ".*,D" \) -print | sort` \
| mail -s My patch

For whatever reason an alias for that doesn't come with Aegis, it's trivial 
enough to add one -- I have it, and it's called aedcat (compare to aedless 
and aedmore), and then it becomes
aedcat | mail -s "Patch doing blah blah, comments anyone?"

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-15 Thread John Levon
On Fri, Mar 14, 2003 at 11:41:20AM -0500, Kuba Ober wrote:

> I know that there are people who do everything in Emacs -- email, software 

Eww don't talk to me about emacs ;)

> But why do you expect to be able to do everything in your mail reader? 

I expect to be able to read things I am sent in my mail reader. I expect
to able to pick out parts of patch and reply with them quoted saying
why I don't like the parts. I would like to able to do this without the
following process :

Save the attachment
scp the file to my home box
gunzip the attachment
copy and paste all the relevant parts back to my mail reader

Which is what I have to undergo now.

> It makes about as much sense as complaining that you have to switch away from 
> your mail reader to play Quake. What does game playing and software 
> development management has to do with mail reading???

I don't know. But that's not what I'm doing.

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Kuba Ober
On piątek 14 marzec 2003 08:44 am, John Levon wrote:
> On Fri, Mar 14, 2003 at 08:20:44AM -0500, Kuba Ober wrote:
> > No matter how small or "insignificant" a change is, there should be a way
> > to review it without having to post a patch to the mailing list.
>
> Sure - get the machinery to post patches. It's as easy in CVS as
> anything else.
>
> > And the fact that a change either passed review or was rejected should be
> > documented so that is accessible.
>
> We simply don't need formal machinery - the mailing list is good enough.

I would argue. First of all, the mailing is *not* devoted only to patches. If 
we had lyx-patches list, that would make more sense. But apparently we don't.

And then changes get lost in the noise, people forget them, it's hard to dig 
things up at times, and so on. That's because a mailing list is just that -- 
a mailing list. It has nothing to do with software development management. It 
can be abused for that purpose, but to me it doesn't make sense if there are 
good tools that were developed just for that purpose (actually, Aegis is a 
bit more than SCM).

And a lot of the information in the mailing list is unaccessible without 
special tools, like archives, search-in-the-archive, etc. E.g. to see how a 
certain problem was attacked, what patches were submitted, and how it wound 
up, in Aegis you simply list the details of a change. Using a mailing list, 
if you don't actually read all the messages, you're depending on your luck, 
people's ability to use meaningful subjects, and your ability to formulate 
proper search terms in order to dig things out of the archive.

I guess that's where you really have a lot of overhead to just see what was 
being done about a change, right? Obviously, one can and should still discuss 
things on the mailing list, it's just that with Aegis

- you can refer to a particular change number, you don't have to repeat what 
the change is (you can put all the clean and nice description into the 
change, and then on the list you just send a mail with a subject "whaddya 
think of C094? -- and it's easy for everybody to look what's it about, 
without you having to repeat same thing in the changelog, on the list, etc.)

- you have locality of reference -- if you're working on the repository, you 
have all your related information on hand, without even *having* to use your 
mail client [myself, I find it worthwhile shutting my KMail down as soon as I 
feel that I'm gonna spend more time reading the mailing lists than workin on 
a given day]

- it's very easy to split a change into separate issues, if the discussion 
turns out to indicate that "it's really 3 different problems"

- (note) even if somebody is on the windoze, there's the read only web 
interface to aegis, so you can always see what the change is all about -- so 
you're not forced to have a unix box available (locally or remotely) just to 
see what's going on


I should also probably point out, that with Aegis the disk space and time 
overhead of trying out a thing three different ways on three different 
branches scales with the complexity of your change, and not with the 
complexity of the project. So if you have say 40 megs and a couple thousand 
inodes left on your filesystem, you could still create about two or three LyX 
changes, every of them in a different branch (say 1.2, 1.3 and 1.4) and 
compile them. Try that with CVS. Wish ya luck.

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Kuba Ober
On piątek 14 marzec 2003 08:46 am, John Levon wrote:
> On Fri, Mar 14, 2003 at 08:36:10AM -0500, Kuba Ober wrote:
> > Just imagine how much easier the life for Lars and all other potential
> > reviewers would be, if instead of scouring the list for stuff to review,
> > and everybody else complaining "my patch has been ignored, so here it is
> > again
>
> Actually, context switching out of my mail reader just  to review a
> patch would be a major PITA (it's annoying enough when people post
> gzipped attachments)

I know that there are people who do everything in Emacs -- email, software 
development, diary, contact list, off we go. I understand that Emacs contains 
a Lisp VM, so in the end you could even write your private version of Doom on 
it, given a decent enough underlying platform (I guess 10GHz PVI would do 
;-).

But why do you expect to be able to do everything in your mail reader? 
Especially, why do you think that a mail reader is a good tool to manage 
software development process?

I know that you probably attached yourself to thinking of the mail reader as a 
software development management tool, but that's just one of nonsensical 
things that barebones CVS installation forces you to do and I doubt there's 
anything more to it...

It makes about as much sense as complaining that you have to switch away from 
your mail reader to play Quake. What does game playing and software 
development management has to do with mail reading???

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 02:57:07PM +0100, Andre Poenitz wrote:

> application/x-gunzip; gunzip -c %s; copiousoutput
> in my /etc/mailcap and everything "magically" works.

Well I'd need some way to do that w/o changing /etc/, and I'd really
like to have the patch inline as well ... guess it's possible somehow

john



Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Andre Poenitz
On Fri, Mar 14, 2003 at 02:03:26PM +, John Levon wrote:
> > gzipped should be no problem
> 
> It's actually a lot of hassle for me

Why?

I have something like


application/x-gunzip; gunzip -c %s; copiousoutput
application/x-gzip; gunzip -c %s; copiousoutput
application/gzip; gunzip -c %s; copiousoutput
application/x-tar-gz; gunzip -c %s | tar -tf -; copiousoutput
application/x-tgz; gunzip -c %s | tar -tf -; copiousoutput

application/x-bunzip2; bunzip2 -c %s; copiousoutput
application/x-bzip2; bunzip2 -c %s; copiousoutput

in my /etc/mailcap and everything "magically" works.

Andre'

-- 
Those who desire to give up Freedom in order to gain Security,
will not have, nor do they deserve, either one. (T. Jefferson)


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 02:43:44PM +0100, Andre Poenitz wrote:

> gzipped should be no problem

It's actually a lot of hassle for me

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Andre Poenitz
On Fri, Mar 14, 2003 at 01:46:56PM +, John Levon wrote:
> Actually, context switching out of my mail reader just  to review a
> patch would be a major PITA (it's annoying enough when people post
> gzipped attachments)

gzipped should be no problem, the PITA is undeclared contents...

Andre'

-- 
Those who desire to give up Freedom in order to gain Security,
will not have, nor do they deserve, either one. (T. Jefferson)


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 08:36:10AM -0500, Kuba Ober wrote:

> Just imagine how much easier the life for Lars and all other potential 
> reviewers would be, if instead of scouring the list for stuff to review, and 
> everybody else complaining "my patch has been ignored, so here it is again 

Actually, context switching out of my mail reader just  to review a
patch would be a major PITA (it's annoying enough when people post
gzipped attachments)

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 08:20:44AM -0500, Kuba Ober wrote:

> No matter how small or "insignificant" a change is, there should be a way to 
> review it without having to post a patch to the mailing list.

Sure - get the machinery to post patches. It's as easy in CVS as
anything else.

> And the fact that a change either passed review or was rejected should be documented 
> so 
> that is accessible.

We simply don't need formal machinery - the mailing list is good enough.

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Kuba Ober
On piątek 14 marzec 2003 06:27 am, John Levon wrote:
> On Fri, Mar 14, 2003 at 11:27:29AM +, Jos?  Matos wrote:
> > On Friday 14 March 2003 11:16, John Levon wrote:
> > > Plus the duplication of the changelong in the commit - most commit
> > > messages are good enough just being the changelog
> >
> >   I remember to have seen some experiments from Lars where the Changelog
> > diff was expanded in cvslog. If that was done then the commit message
> > could only be the title for the whole changes.
>
> Sometimes though it's useful to add notes (please test etc.). So we
> could make it always add the ChangeLog diffs but also pick something up
> from the commitlog...

Changelog, commitlog, oh boy ;-)

Well, aegis keeps all data about a change, including the history of various 
states the change went through, in a place that you access via simple

ael cd

which stands for "AEgisList ChangeDetails".

You can instantly see if the change passed the review or failed, if it failed 
then what was the reason given by the reviewer, etc.

I guess life gets a tad more organized when you can do things like the 
following, all within the framework:

# these are the actual things from my project
$ aegis -list -unformatted c | grep awaiting_development
31 awaiting_development Add targeted limit of stability
75 awaiting_development Add waveform display
76 awaiting_development Sorting of the tables
77 awaiting_development Fix height conversion roundoff errors
78 awaiting_development Collective results printing
79 awaiting_development Nicer CoP markers

$ aegis -list -unformatted c | grep awaiting_review
93 awaiting_review Streamline the I/O framework

Obviously, (for you keystroke minimization freaks) one is free to add 
shortcuts (aliases) to these, and I guess we can have our own aegis alias 
file so that if somebody invents a nice shortcut, everybody could use it.

Just imagine how much easier the life for Lars and all other potential 
reviewers would be, if instead of scouring the list for stuff to review, and 
everybody else complaining "my patch has been ignored, so here it is again 
[and then its outdated, and they have to rediff] they would just list changes 
awaiting review and access the diffs via *two* commands. Suppose somebody is 
to review my change 93:
$ ae_c 93
$ aedless
That's all -- the diffs (with *full* context) are just displayed via less.

And note -- at any stage before change's integration, you can change the 
description of a change (the one liner as well as the extended one). So, you 
could put something like
"Move some more stuff over to boost graph (Lars, plz review)"
and then, after Lars reviews it, he just deletes the stuff in parentheses. So 
there's some room for creativity -- Aegis doesn't preclude having fun!

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Kuba Ober
On piątek 14 marzec 2003 06:16 am, John Levon wrote:
> On Fri, Mar 14, 2003 at 09:01:20AM +0100, Andre Poenitz wrote:
> >   vi insets/Changelog
> >   [insert changelog]
> >   cvs commit
> >   [write 'Fix for missing space as reported by Angus]
> >
> >   :wq
> >
> > The "cvs overhead" is  'cvs up' + 'cvs commit', i.e. 18 keystrokes.
> > What would be the corresponding aegis version?
>
> Plus the duplication of the changelong in the commit - most commit
> messages are good enough just being the changelog

Luckily, Aegis manages *both* the Changelog and the TODO for you, and it comes 
free. No more Changelog and TODO files to edit ;-)

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Kuba Ober
> Hm. Ok. Let's count keystrokes for a minimalistic real life example.
> Let's suppose Angus told me there is a space missing in inset/insetenv.C.
>
> I do
>
>   cvs up
>   vi insets/insetenv.C
>   [insert the space]
>
>   :wq
>
>   vi insets/Changelog
>   [insert changelog]
>   cvs commit
>   [write 'Fix for missing space as reported by Angus]
>
>   :wq
>
> The "cvs overhead" is  'cvs up' + 'cvs commit', i.e. 18 keystrokes.
> What would be the corresponding aegis version?

[invoke whatever script you have to sync with the master -- it depends on the 
setup, obviously it's a single command]
aenc
[write 'Fix for the missing space as reported by Angus]
ae_c xxx
[choose the change you've just created]
aecp insets/insetenv.C
vi insets/insetenv.C
[insert the space]
aeb && aed && aede
aerpass
aeib && aeb && aed && aeipass
[invoke whatever other script to sync with the master again]

Note that aeb && aed && aede are trivial to put into a single alias (the 
ae stuff are aliases for aegis -x anyway), just as aeib && aeb && aed 
&& aeipass are

If you are really that conscious about the number of keystrokes that you do, 
it's trivial enough to have say an "aetriviale" alias which wraps up the 
change all the way to the repository (as in building, passing review, 
integrating, syncing integration to the rep).

> > One of significant drawbacks of CVS is that it effectively prevents you
> > from sharing your work in progress
>
> Which, in an ideal world, is not much of a problem, as changes should be
> small and self-contained. LyX, of course, is not the ideal world...

No matter how small or "insignificant" a change is, there should be a way to 
review it without having to post a patch to the mailing list. And the fact 
that a change either passed review or was rejected should be documented so 
that is accessible. Although mailing lists are commonplace to do that, it's 
not the correct approach. A database which keeps all that information is 
simply provided with Aegis, it comes for free, there is a read-only web 
interface for Aegis that comes by default with Aegis itself.

> Ok, maybe aegis is really better in large projects, but I don't think, LyX
> reaches that critical mass. 

I use it for a 13k line project of mine (among others). I also use it for a 
webpage structure that has about 500kb of text. I also use it for DNS, which 
has about 30k in config and domain files all together.

> This was btw my impression when we used aegis
> in our two-or-three-person-project I mentioned earlier.

I don't think that keeping a well accessible record of what was done, when and 
by whom is something that small projects can simply ignore. It also has the 
added benefit that one teaches himself some self-discipline. I guess it would 
even look good on the resume.

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 11:27:29AM +, Jos?  Matos wrote:

> On Friday 14 March 2003 11:16, John Levon wrote:
> >
> > Plus the duplication of the changelong in the commit - most commit
> > messages are good enough just being the changelog
> 
>   I remember to have seen some experiments from Lars where the Changelog diff 
> was expanded in cvslog. If that was done then the commit message could only 
> be the title for the whole changes.

Sometimes though it's useful to add notes (please test etc.). So we
could make it always add the ChangeLog diffs but also pick something up
from the commitlog...

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread José Matos
On Friday 14 March 2003 11:16, John Levon wrote:
>
> Plus the duplication of the changelong in the commit - most commit
> messages are good enough just being the changelog

  I remember to have seen some experiments from Lars where the Changelog diff 
was expanded in cvslog. If that was done then the commit message could only 
be the title for the whole changes.

  The cvs log is just an example of browsing the changes, any other method 
will not differ significantly from it.
> john

-- 
José Abílio


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread John Levon
On Fri, Mar 14, 2003 at 09:01:20AM +0100, Andre Poenitz wrote:

>   vi insets/Changelog
>   [insert changelog]
>   cvs commit
>   [write 'Fix for missing space as reported by Angus]
>   :wq
> 
> The "cvs overhead" is  'cvs up' + 'cvs commit', i.e. 18 keystrokes.
> What would be the corresponding aegis version?

Plus the duplication of the changelong in the commit - most commit
messages are good enough just being the changelog

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-14 Thread Andre Poenitz
On Thu, Mar 13, 2003 at 02:40:31PM -0500, Kuba Ober wrote:
> Well, each change that you create with aenc or tkaenc gets a number. Usually, 
> there should be a change for each confirmed bug report at least. The job of 
> creating changes is quite separate from the job of actually developing the 
> changes. You can have different people doing creation of the changes, and 
> different ones doing development.

Hm. Ok. Let's count keystrokes for a minimalistic real life example.
Let's suppose Angus told me there is a space missing in inset/insetenv.C.

I do

  cvs up  
  vi insets/insetenv.C
  [insert the space]
  :wq
  vi insets/Changelog
  [insert changelog]
  cvs commit
  [write 'Fix for missing space as reported by Angus]
  :wq

The "cvs overhead" is  'cvs up' + 'cvs commit', i.e. 18 keystrokes.
What would be the corresponding aegis version?

> One of significant drawbacks of CVS is that it effectively prevents you from 
> sharing your work in progress

Which, in an ideal world, is not much of a problem, as changes should be
small and self-contained. LyX, of course, is not the ideal world...

Ok, maybe aegis is really better in large projects, but I don't think, LyX
reaches that critical mass. This was btw my impression when we used aegis
in our two-or-three-person-project I mentioned earlier.

Andre'

-- 
Those who desire to give up Freedom in order to gain Security,
will not have, nor do they deserve, either one. (T. Jefferson)


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
> > It's just that if you work on one thing, it's beneficial even for your
> > own sake to have different explorations/fixes/enhancements/etc. done in
> > different
>
> I tell you what I'd like (my ideal interface). I do some work. Then I
> run readdifftool or something and I can do some action on each (set of)
> hunks. So I can mark *this* bit as being "Just a test", *that* bit as
> "fix bug in lastPos()", etc. After that I can carry on working and the
> *next* time I do it, all the diffs are  against the /last/ time I ran
> the tool (or something else). Eventually I can choose to commit
> properly a changeset or some number of them.

So, you essentially feel like working on one tree all the time. I guess that 
having a very powerful tool to let you have multiple trees available at the 
same time is better.

First of all, it isn't always that patch hunks come out exactly they way you 
want them to. You'd need to actually have a tool to be able to split hunks, 
interactively, and assign some descriptions to them.

Well, in Aegis you almost do that, but in a slightly different way.
Say you're working on a thing. You decide to test something. You create a new 
change for the test, and you can even completely trash the tree. It doesn't 
matter. If the test is worth anything, you just finish development and get it 
integrated. If it turns out to be useless or you just needed it for your own 
temporary purposes, you simply do "aedbu; aencu" as in "DevelopBeginUndo; 
NewChangeUndo" -- the change is withdrawn, no trace of it left.

Whereas, when you find a bug that your pending stuff uncovers, you simply make 
a separate change for it. So, you work on something, you find a bug in 
"lastPos()", you simply create a new change for it with one-line description 
"fix the lastPos() bug", you modify relevant files, it tests and builds, and 
you're done. If you want, you integrate that right away, and then in your 
"primary" change that you worked on, you just do "aem" (Merge) -- the fix 
that you integrated into the baseline will be intelligently merged into the 
tree for your current change.

> It really is that simple.

In your case, you want:
- set up the development tree
- work on something
- something else pops up, work on that too
- there's some testing to do, put that in as well
- you end up with a big patch that you have to split by hand (or using some 
tool)

In Aegis case, you do:
- set up a change
- work on something
- set up another change for something else that came up
- work on that something else, finish it quickly (minor thing), get it 
integrated
- set up another change for some testing
- wreak havoc in any way you feel like
- either finish and integrate the tested out thing, or just discard it
- work more on your primary thing
- decide it's a good time to merge with your other bugfixes (and other 
people's work, if any has been integrated in the meantime)
- work some more (maybe resolve the conflicts if there were any)
- wrap it up, do the integration

The thing is, that
1. Aegis keeps your different tasks separated in their own source trees
2. The source trees are symlinked to the baseline, so there's no wasted disk 
space (there are other ways to do it as well, e.g. via VPATH)
3. The baseline for the trunk and for each branch consists of a full working 
thing -- meaning that the full working thing is a compiled thing, and all 
compilation results stay there -- it's managed by Aegis, actually

So, the overhead of creating a new change, editing one or two files, building 
and integrating ("committing") is almost nil -- the fact that you have a new 
change doesn't mean that *everything* is rebuilt. Since working compiled 
files are part of the repository (although they are managed by Aegis and you 
don't need to be concerned about them at all), building a new change involves 
only whatever the dependency tool (make/cook) deems necessary to do due to 
the files that you have actually changed -- no more, no less.

And the even better fact is that it's relatively easy to set things up so that 
e.g. LyX would be built using different glibc versions (just specify it as 
part of the architecture) -- that way developers using different 
linux/glibc/whatever version's don't need to suffer long recompiles if all 
they did is to change a few files. That speeds things up immensely in my 
experience.

> I  think it would actually be possible, with a little CVS Root tweaking
> etc., to build that on top of CVS. Lars gets his small (even tiny)
> patches whilst I get to build up a few hours of work without getting
> distracted.

Sometimes just wording whatever it is that you're supposedly doing, even in a 
single sentence, may help you. Creating new changes is a fast process -- 
apart from typing the changelog entry (oh well, initially it can be blank) 
and having Aegis put the symlinks in place, there's nothing more to it. 
Oftentimes I had 5-6 different changes started and wrapped up in an hour. If 
say I was worki

Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 04:36:09PM -0500, Kuba Ober wrote:

> > Isn't the computer the one that's good with numbers ?
> 
> Well, change numbers are similar to bugzilla bug numbers. You always can list 
> them to find out what the number is. And you choose current change to work on 
> (you can have several under development at any time).

where does this number come from then ?

> whole process if I need to do a one-liner kind of fix is about 2 minutes, 
> from beginning to the end (change creation to final integration).

wow, too much ...

/me runs

> Sure. It is there. Your development three is symlinked to the baseline. That's 
> the default model. The baseline is read-only, though, so if you want to 
> actually change a file, you just aecp it.

The thing should simply notice what's changed and handle it like that.

> The whole devel/stable split is OK if you feel like having one. I, for one, 
> like to do everything in "HEAD", but the HEAD itself is kept stable all the 

This would be nice to have but realistically it won't and can't happen

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On czwartek 13 marzec 2003 02:50 pm, John Levon wrote:
> On Thu, Mar 13, 2003 at 02:40:31PM -0500, Kuba Ober wrote:
> > Your unix login, as in logged in to the terminal. ae_p is an alias for
> > export AEGIS_PROJECT="$1";
>
> Oh that's OK then.
>
> > That's the whole thing. It's hard to do clean and nice development if you
> > cannot say what you do. You can always modify it before final
> > integration.
>
> I assume there's a non-gui form. Why is this better than ChangeLog ?

Non-gui form is there too. It just brings vi with a template.

ChangeLog is actually generated for you, automatically ;-). As well as the 
TODO list. It's called list of changes, and you bring it up at any time 
simply by:
$ ael c
as in "AEgisList Changes"


> > Well, each change that you create with aenc or tkaenc gets a number.
> > Usually, there should be a change for each confirmed bug report at least.
> > The job of creating changes is quite separate from the job of actually
> > developing the changes. You can have different people doing creation of
> > the changes, and different ones doing development.
>
> Isn't the computer the one that's good with numbers ?

Well, change numbers are similar to bugzilla bug numbers. You always can list 
them to find out what the number is. And you choose current change to work on 
(you can have several under development at any time).

> > aecd = change directory; it simply changes the current working directory
> > to the root directory of the current change's (each change has its own
> > development directory), obviously if you feel like doing cd
> > ~/lyx.1.4.1.C110 instead of aecd, you're free ;-)
> >
> > aecp README = well, you have to be explicit which files are in the
> > change; by default you either have a development directory symlinked to a
> > read-only baseline, or you have a VPATH environment; either way you have
> > to create physical files that you're gonna edit in your development
> > directory; that's what aecp is for -- it copies the file from the
> > baseline to the development directory
>
> Well this is no good at all. It's far too much administration. What if
> I'm doing some work that requires some other changes that don't actually
> form part of the change ? (For example, I'm fixing a NO_NEXT case - I
> want to commit the fix but not commit the NO_NEXT turning on).

Well, it's up to you to create all those separate changes. I find that the 
whole process if I need to do a one-liner kind of fix is about 2 minutes, 
from beginning to the end (change creation to final integration).

> At the very least I need a full source tree available directly that I
> can play around in.

Sure. It is there. Your development three is symlinked to the baseline. That's 
the default model. The baseline is read-only, though, so if you want to 
actually change a file, you just aecp it.

> > aeb = build (only the files that you change will be rebuilt, other ones
> > will be used from the baseline -- that means that you don't have to
> > notoriously recompile everything)
>
> That's no different to now. If a header file changes then dependent
> files must be rebuilt

Sure. I mean, in the end aeb just invokes whatever build tool you use - 
qmake+make, make, cook, whatever.

> > cd ~ = well, you have to exit the development directory before
> > integration, since after stuff is integrated the development directory
> > will vanish
>
> And if I want to see what I just did ?

Integration is the final step where you actually decide that your change has 
been sucessfully built, it passed tests and review, and is ready to become 
part of the working product.

Your work is done in the development directory during development. Usually 
development involves aecp'ing the files that you want to modify, doing the 
modification, building and debugging the thing, and finally deciding you're 
done and finishing the development with aede. Your change has then to pass 
review -- if you're authorized for reviewing changes, you can just type 
aerpass yourself, that's all. Integration is done *after* review, and 
typically it's administrators role.

In CVS terms, consider change development the work you do on your own branch 
(with commits and everything), review a look by somebody at your "final" 
state of the branch, and integration the merging of the branch into the main 
trunk.

> I could probably survive with a system like this if I was working (as
> in: being paid) on something. But this sort of methodology does not
> agree with the whole devel/stable split. And I guarantee you that you
> find people just hacking around outside of this framework anyway.

Actually, the whole design is such that physically the repository files are 
owned by aegis user and they are read-only. Note that the repository only 
consists of stuff that has been integrated, the metadata about changes, and 
any changes that await review/integration. The development directories are 
only on developers' machines.

The whole devel/stable split

Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 04:07:56PM -0500, Kuba Ober wrote:

> > Quality is not and never was the most important thing with lyx. There
> > are some (rare) projects where it is ... not here...
> 
> I'm not claiming it's *the* most imporant thing. Nevertheless, it is somewhat 
> important, right?

Hopefully :)

> It's just that if you work on one thing, it's beneficial even for your own 
> sake to have different explorations/fixes/enhancements/etc. done in different 

I tell you what I'd like (my ideal interface). I do some work. Then I
run readdifftool or something and I can do some action on each (set of)
hunks. So I can mark *this* bit as being "Just a test", *that* bit as
"fix bug in lastPos()", etc. After that I can carry on working and the
*next* time I do it, all the diffs are  against the /last/ time I ran
the tool (or something else). Eventually I can choose to commit
properly a changeset or some number of them.

It really is that simple. I don't know if Meta-CVS can handle this, but
I  think it would actually be possible, with a little CVS Root tweaking
etc., to build that on top of CVS. Lars gets his small (even tiny)
patches whilst I get to build up a few hours of work without getting
distracted.

Aegis seems to do this, but its way too high an overhead in terms of
type this, then that, then the other, it seems.

regards
john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On czwartek 13 marzec 2003 02:52 pm, John Levon wrote:
> On Thu, Mar 13, 2003 at 02:45:29PM -0500, Kuba Ober wrote:
> > > Some of us don't want configuration management.
> >
> > The quality of software has been shown to be worse without one ;-)
>
> Quality is not and never was the most important thing with lyx. There
> are some (rare) projects where it is ... not here...

I'm not claiming it's *the* most imporant thing. Nevertheless, it is somewhat 
important, right?

> > > That's making unwarranted assumptions. Actually I'd like to avoid as
> > > much administration as possible. That means not having to wait for
> > > formal reviews, not having to open PRs before a fix can be accepted etc
> >
> > PR's? Gosh, it can be a one-liner! You have to put a changelog entry
> > anyway,
>
> I was referring to e.g. Mozilla's model

I don't know Mozilla's model. In Aegis, you can put as much or as little info 
into the change description as you feel like. You can even have anonymous 
changes. They are then only identified by number.

It's just that if you work on one thing, it's beneficial even for your own 
sake to have different explorations/fixes/enhancements/etc. done in different 
changes -- say if you work on newest dialogs, it's worthwhile fixing say the 
few loosely related bugs that the new dialogs seem to uncover in a separate 
change. First of all that change will be small and it will be up for 
integration much quicker, and second of all this methodology has been asked 
over and over by Lars (as in: please send small, separate patches). That's 
almost like him asking to do things in separate changes, and have the 
integrated one at a time. I'm with Lars here: I have found that doing my own 
development like this, things are easier to keep under control, and I don't 
mix bugfixes with the feature enhacements that I happen to be working on at 
the time. Things are neatly separated, and the customers can get the fixes 
very quickly.

The nice thing is, that if you feel like doing somebody else's wishes or bugs, 
you just use
$ ael c
to list all changes in current branch -- some of these changes will be in 
awaiting development state, so they are up for grabs.

Or, if you feel like implementing your next killer feature, just create a 
change for it. Even better - if you have just an idea for a killer feature 
but no will/time to implement it, you can create a change ASAP. The 
development on it doesn't need to actually start right away. It can sit 
there, you can add more thoughts to the description, and finally you or 
somebody else could pick it up at a later time.

Ah well, IIRC Aegis has a CVS repository migration tool, which automatically 
generates changes and branches for previous development work. It even has 
some intelligence to it (tries to decide which files went into each change - 
so sometimes it can merge commits if it decides they are somehow related). I 
never used it, but it's supposedly there.

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 02:45:29PM -0500, Kuba Ober wrote:

> > Some of us don't want configuration management.
> 
> The quality of software has been shown to be worse without one ;-)

Quality is not and never was the most important thing with lyx. There
are some (rare) projects where it is ... not here...

> > That's making unwarranted assumptions. Actually I'd like to avoid as
> > much administration as possible. That means not having to wait for
> > formal reviews, not having to open PRs before a fix can be accepted etc
> 
> PR's? Gosh, it can be a one-liner! You have to put a changelog entry anyway, 

I was referring to e.g. Mozilla's model

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 02:40:31PM -0500, Kuba Ober wrote:

> Your unix login, as in logged in to the terminal. ae_p is an alias for
> export AEGIS_PROJECT="$1";

Oh that's OK then.

> That's the whole thing. It's hard to do clean and nice development if you 
> cannot say what you do. You can always modify it before final integration.

I assume there's a non-gui form. Why is this better than ChangeLog ?

> Well, each change that you create with aenc or tkaenc gets a number. Usually, 
> there should be a change for each confirmed bug report at least. The job of 
> creating changes is quite separate from the job of actually developing the 
> changes. You can have different people doing creation of the changes, and 
> different ones doing development.

Isn't the computer the one that's good with numbers ?

> aecd = change directory; it simply changes the current working directory to 
> the root directory of the current change's (each change has its own 
> development directory), obviously if you feel like doing cd ~/lyx.1.4.1.C110 
> instead of aecd, you're free ;-)
> 
> aecp README = well, you have to be explicit which files are in the change; by 
> default you either have a development directory symlinked to a read-only 
> baseline, or you have a VPATH environment; either way you have to create 
> physical files that you're gonna edit in your development directory; that's 
> what aecp is for -- it copies the file from the baseline to the development 
> directory

Well this is no good at all. It's far too much administration. What if
I'm doing some work that requires some other changes that don't actually
form part of the change ? (For example, I'm fixing a NO_NEXT case - I
want to commit the fix but not commit the NO_NEXT turning on).

At the very least I need a full source tree available directly that I
can play around in.

> aeb = build (only the files that you change will be rebuilt, other ones will 
> be used from the baseline -- that means that you don't have to notoriously 
> recompile everything)

That's no different to now. If a header file changes then dependent
files must be rebuilt

> cd ~ = well, you have to exit the development directory before integration, 
> since after stuff is integrated the development directory will vanish

And if I want to see what I just did ?

I could probably survive with a system like this if I was working (as
in: being paid) on something. But this sort of methodology does not
agree with the whole devel/stable split. And I guarantee you that you
find people just hacking around outside of this framework anyway.

> the mailing list. In the Aegis model, you only need to say that the 
> development is done; it then awaits review and anyone can have a look at it 
> from the main (public) server, only when the change gets integrated it 
> actually affects the baseline (which is supposed to be always working, not 

Assuming this works properly, that would be very nice yes.

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On czwartek 13 marzec 2003 02:31 pm, John Levon wrote:
> On Thu, Mar 13, 2003 at 02:19:14PM -0500, Kuba Ober wrote:
> > I guess the whole problem is that *any* replacement for CVS is doomed to
> > be bound with same basic issues. I don't think that there's a need for
> > another version control system. There's a need for a software
> > configuration management tool
>
> Some of us don't want configuration management.

The quality of software has been shown to be worse without one ;-)

> > CVS is good what it's good for
>
> No it's not.

Okay, I'm not using it much, so I don't argue anymore.

> > it's just that if you're managing real-life projects, you do much more
> > than just version control.
>
> That's making unwarranted assumptions. Actually I'd like to avoid as
> much administration as possible. That means not having to wait for
> formal reviews, not having to open PRs before a fix can be accepted etc

PR's? Gosh, it can be a one-liner! You have to put a changelog entry anyway, 
right And with Aegis, the Changelog *and* TODO lists can be both 
generated automatically.

> > If the consensus is that nobody needs anything more than version control,
> > then CVS is fine.
>
> It emphatically is not fine.
>
> > does move from a non-VCS environment to one with any VCS. Aegis is about
> > 10 years "old" right now, it's used to manage large development projects
> > (not only in software).
>
> We're not a large project and we don't need or want admin overhead. I do
> not believe that a lot of boondage and discipline will decrease the bug
> rate for us ... it's supposed to be fun, at least in part.

Life is very fun with Aegis. Almos everybody can put their wishes in as 
changes awaiting development, and you have a simple, development-bound 
interface for it. It's integral with version control. You don't need to use 
Bugzila, then.

The process has very loose rules, and you can always be a self-reviewer and 
self-administrator. These are all per-project configurable. And the 
self-discipline that it teaches you is really beneficient. I guess I became a 
slightly better and more organized developer because of that. And you get all 
the stats for free (as in how long it took whom to do what, etc)!

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On czwartek 13 marzec 2003 02:17 pm, John Levon wrote:
> On Thu, Mar 13, 2003 at 02:12:07PM -0500, Kuba Ober wrote:
> > I was very explicit about things. First of all, if you are wearing all
> > the hats yourself -- you're a developer, reviewer and administrator of
> > the project, the only thing you need to do to make a new change and
> > integrate it to the master server is:
>
> This is about 10 lines too long.
>
> > $ ae_p lyx.1.4.1
> > # once per login, and only if there are many projects; the msot recent
> > branch of the first project is a default
>
> what is a login ?

Your unix login, as in logged in to the terminal. ae_p is an alias for
export AEGIS_PROJECT="$1";

> > $ tkaenc
> > # a gui pops up and lets you type a change information
>
> Waste of time - gets in my way. Maybe I don't even know what I'm going
> to do.

That's the whole thing. It's hard to do clean and nice development if you 
cannot say what you do. You can always modify it before final integration.

> > $ ae_c 110
> > # okay, we choose to work on change number 110
>
> what on earth ... ?

Well, each change that you create with aenc or tkaenc gets a number. Usually, 
there should be a change for each confirmed bug report at least. The job of 
creating changes is quite separate from the job of actually developing the 
changes. You can have different people doing creation of the changes, and 
different ones doing development.

> > $ aedb
> > # begin development
> > $ aecd; aecp README
> > # add the README file into the change
>
> I seriously have to do this for every file I want to edit ?

aedb = develop begin; you do it only to start development of a change, so it's 
done once per change

aecd = change directory; it simply changes the current working directory to 
the root directory of the current change's (each change has its own 
development directory), obviously if you feel like doing cd ~/lyx.1.4.1.C110 
instead of aecd, you're free ;-)

aecp README = well, you have to be explicit which files are in the change; by 
default you either have a development directory symlinked to a read-only 
baseline, or you have a VPATH environment; either way you have to create 
physical files that you're gonna edit in your development directory; that's 
what aecp is for -- it copies the file from the baseline to the development 
directory

> > $ vi README
> > # do the changes (you could use any editor, obviously)
> > $ aed && aeb && aede
> > # build and finish development -- note that build here will do nothing,
> > as # compilation results are in the repository too [managed automatically
> > # by Aegis]
> > $ aerpass
> > # make the review pass
> > $ cd ~; aed && aeb && aeipass
> > # build and integrate into the baseline for given branch
>
> I assume you can turn this stuff off.

Well, first of all you're a developer. A developer's business is to mind his 
own business ;-). So, once you do your edits,
aed = do the diffs against the baseline
aeb = build (only the files that you change will be rebuilt, other ones will 
be used from the baseline -- that means that you don't have to notoriously 
recompile everything)
aede = finish the development, the changes goes into "awaiting review" state

aerpass = indicate that the change had passed the review, this has to be done 
by whomever is marked as a reviewer, obviously it can be the same person all 
the time

cd ~ = well, you have to exit the development directory before integration, 
since after stuff is integrated the development directory will vanish
aed = do the integration diffs
aeb = do the integration build
aeipass = indicate that the change has passed the integration, this has to be 
done by whomever is marked as project administrator; once the integration is 
done the change becomes part of the baseline

One should think of each change as a separate branch in the CVS model. 
Actually, a branch is just a regular change with a flag set indicating that 
it's a branch, not just "any" change. Changes can be bounced back and forth 
between the following states:

awaiting development (say a new automatic change entry via bugzilla, or 
manually via tkaenc)
being developed
awaiting review
awaiting integration
being integrated
completed.

Only the "completed" state is final -- once it's integrated, it's integrated 
;-)

One of significant drawbacks of CVS is that it effectively prevents you from 
sharing your work in progress -- the only way for things to get to the 
"public" CVS server is via committing. Or you have to manually send diffs to 
the mailing list. In the Aegis model, you only need to say that the 
development is done; it then awaits review and anyone can have a look at it 
from the main (public) server, only when the change gets integrated it 
actually affects the baseline (which is supposed to be always working, not 
like in CVS where you can destroy the HEAD all you fancy and CVS is none the 
wiser).

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 07:31:10PM +, John Levon wrote:

> We're not a large project and we don't need or want admin overhead. I do
> not believe that a lot of boondage and discipline will decrease the bug
> rate for us ... it's supposed to be fun, at least in part.

I take it back, "boondage" sounds like it might be fun

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 02:19:14PM -0500, Kuba Ober wrote:

> I guess the whole problem is that *any* replacement for CVS is doomed to be 
> bound with same basic issues. I don't think that there's a need for another 
> version control system. There's a need for a software configuration 
> management tool

Some of us don't want configuration management.

> CVS is good what it's good for

No it's not.

> it's just that if you're managing real-life projects, you do much more 
> than just version control.

That's making unwarranted assumptions. Actually I'd like to avoid as
much administration as possible. That means not having to wait for
formal reviews, not having to open PRs before a fix can be accepted etc

> If the consensus is that nobody needs anything more than version control, then 
> CVS is fine.

It emphatically is not fine.

> does move from a non-VCS environment to one with any VCS. Aegis is about 10 
> years "old" right now, it's used to manage large development projects (not 
> only in software).

We're not a large project and we don't need or want admin overhead. I do
not believe that a lot of boondage and discipline will decrease the bug
rate for us ... it's supposed to be fun, at least in part.

 john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On czwartek 13 marzec 2003 05:05 am, Dekel Tsur wrote:
> On Wed, Mar 12, 2003 at 10:50:48PM +0100, Lars Gullik Bj?nnes wrote:
> > | Another alternative is Subversion.
> >
> > I would at least wait for version 1.0.
>
> Yes, but if you feel that Subversion will become the CVS replacement, then
> we should wait until it is finished, and not move to Aegis.

I guess the whole problem is that *any* replacement for CVS is doomed to be 
bound with same basic issues. I don't think that there's a need for another 
version control system. There's a need for a software configuration 
management tool -- an entirely different beast. CVS is good what it's good 
for, it's just that if you're managing real-life projects, you do much more 
than just version control.

If the consensus is that nobody needs anything more than version control, then 
CVS is fine. No need to switch. If the consensus is that an SCM tool is 
what's really needed, then Aegis is a very mature tool that has excellent 
track record, it's GPL, and it rocks. It needs an attitude switch, but so 
does move from a non-VCS environment to one with any VCS. Aegis is about 10 
years "old" right now, it's used to manage large development projects (not 
only in software).

I'm not pushing for anything -- as I said, I'm using it myself and I'd be 
happy to aid in the deployment. It makes me a happier developer and that's 
all that counts (yes, I'm selfish here). If a VCS is all that LyX developers 
think they need, I guess there's no arguing with that.

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread John Levon
On Thu, Mar 13, 2003 at 02:12:07PM -0500, Kuba Ober wrote:

> I was very explicit about things. First of all, if you are wearing all the 
> hats yourself -- you're a developer, reviewer and administrator of the 
> project, the only thing you need to do to make a new change and integrate it 
> to the master server is:

This is about 10 lines too long.

> $ ae_p lyx.1.4.1
> # once per login, and only if there are many projects; the msot recent branch 
> of the first project is a default

what is a login ?

> $ tkaenc
> # a gui pops up and lets you type a change information

Waste of time - gets in my way. Maybe I don't even know what I'm going
to do.

> $ ae_c 110
> # okay, we choose to work on change number 110

what on earth ... ?

> $ aedb
> # begin development
> $ aecd; aecp README
> # add the README file into the change

I seriously have to do this for every file I want to edit ?

> $ vi README
> # do the changes (you could use any editor, obviously)
> $ aed && aeb && aede
> # build and finish development -- note that build here will do nothing, as
> # compilation results are in the repository too [managed automatically
> # by Aegis]
> $ aerpass
> # make the review pass
> $ cd ~; aed && aeb && aeipass
> # build and integrate into the baseline for given branch

I assume you can turn this stuff off.

> $ aedist -send | mail -s integrate [EMAIL PROTECTED]
> # upload to the server which should handle the rest automagically

Anyway I'm not sure a discussion on Aegis is relevant or fruitful :)

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Kuba Ober
On środa 12 marzec 2003 02:19 pm, John Levon wrote:
> On Wed, Mar 12, 2003 at 02:13:16PM -0500, Kuba Ober wrote:
> > Probably because Aegis, although a very cleanly and understanably coded
> > project, is essentially one man's work for most part. If something
> > happens to
>
> It's more likely that it can't handle what he needs. 

I doubt he would use a tool that has only one person behind it, for all 
practical purposes. It has some very real implications if say Peter would 
decide to stop working on it.

> at least your
> description of how things work put me  right off it (that is, I couldn't
> follow it within 10 seconds or so of reading it). What're all these
> obscure edit and send commands etc. ?
>
> We just don't need administration overheads. All I want is properly
> distributed repos, it's that simple :)

I was very explicit about things. First of all, if you are wearing all the 
hats yourself -- you're a developer, reviewer and administrator of the 
project, the only thing you need to do to make a new change and integrate it 
to the master server is:

$ ae_p lyx.1.4.1
# once per login, and only if there are many projects; the msot recent branch 
of the first project is a default
$ tkaenc
# a gui pops up and lets you type a change information
$ ae_c 110
# okay, we choose to work on change number 110
$ aedb
# begin development
$ aecd; aecp README
# add the README file into the change
$ vi README
# do the changes (you could use any editor, obviously)
$ aed && aeb && aede
# build and finish development -- note that build here will do nothing, as
# compilation results are in the repository too [managed automatically
# by Aegis]
$ aerpass
# make the review pass
$ cd ~; aed && aeb && aeipass
# build and integrate into the baseline for given branch
$ aedist -send | mail -s integrate [EMAIL PROTECTED]
# upload to the server which should handle the rest automagically

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-13 Thread Dekel Tsur
On Wed, Mar 12, 2003 at 10:50:48PM +0100, Lars Gullik Bj?nnes wrote:
> | 
> | Another alternative is Subversion.
> 
> I would at least wait for version 1.0.

Yes, but if you feel that Subversion will become the CVS replacement, then
we should wait until it is finished, and not move to Aegis.


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Lars Gullik Bjønnes
Dekel Tsur <[EMAIL PROTECTED]> writes:

| On Wed, Mar 12, 2003 at 07:23:10PM +0100, Lars Gullik Bj?nnes wrote:
| > Kuba Ober <[EMAIL PROTECTED]> writes:
| > 
| > I'll have a look at aegis.
| > 
| > At first glance it seems to be similar to BitKeeper? What are the
| > differences? (And why doesn't Linus want to use aegis?)
| > 
| > I'll go through the documentation.
| 
| Another alternative is Subversion.

I would at least wait for version 1.0.

-- 
Lgb


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Lars Gullik Bjønnes
Dekel Tsur <[EMAIL PROTECTED]> writes:

| On Wed, Mar 12, 2003 at 07:23:10PM +0100, Lars Gullik Bj?nnes wrote:
| > Kuba Ober <[EMAIL PROTECTED]> writes:
| > 
| > I'll have a look at aegis.
| > 
| > At first glance it seems to be similar to BitKeeper? What are the
| > differences? (And why doesn't Linus want to use aegis?)
| > 
| > I'll go through the documentation.
| 
| Another alternative is Subversion.

Which is even more unfinished.

-- 
Lgb


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Dekel Tsur
On Wed, Mar 12, 2003 at 07:23:10PM +0100, Lars Gullik Bj?nnes wrote:
> Kuba Ober <[EMAIL PROTECTED]> writes:
> 
> I'll have a look at aegis.
> 
> At first glance it seems to be similar to BitKeeper? What are the
> differences? (And why doesn't Linus want to use aegis?)
> 
> I'll go through the documentation.

Another alternative is Subversion.


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread John Levon
On Wed, Mar 12, 2003 at 02:13:16PM -0500, Kuba Ober wrote:

> Probably because Aegis, although a very cleanly and understanably coded 
> project, is essentially one man's work for most part. If something happens to 

It's more likely that it can't handle what he needs. at least your
description of how things work put me  right off it (that is, I couldn't
follow it within 10 seconds or so of reading it). What're all these
obscure edit and send commands etc. ?

We just don't need administration overheads. All I want is properly
distributed repos, it's that simple :)

john


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Kuba Ober
On środa 12 marzec 2003 01:23 pm, Lars Gullik Bjønnes wrote:
> Kuba Ober <[EMAIL PROTECTED]> writes:
>
> I'll have a look at aegis.
>
> At first glance it seems to be similar to BitKeeper? What are the
> differences? (And why doesn't Linus want to use aegis?)
>
> I'll go through the documentation.

Probably because Aegis, although a very cleanly and understanably coded 
project, is essentially one man's work for most part. If something happens to 
Peter Miller ( forbid), Aegis becomes (at 
least for a while) a project without maintainer, and without architect's 
support. I guess Linus had to use something that has strong commercial 
backing, and I understand that decision. And, because Bitkeeper has a company 
behind it (rather than a single person in case of Aegis), the requests for 
improvements and fixes can be integrated quicker. Although Aegis is open 
source and GPL, it's still currently being developed mainly by one person.

One of the reasons why it may be unpopular is that Peter hates recursive make 
:), and rightly so. He wrote a very educational article why recursive make is 
harmful. I hate recursive make too, so I don't use it :). I guess that it's 
hard for people who are used to autotools and recursive makefiles the 
autotools generate to understand that there are better things to do with life 
than hunting brokenness which is handled all right by simpler and more 
powerful tools (as in automake+gmake replaced by cook).

My guesstimate is that projects of LyX's size and developer diversity, if 
moved from CVS and automake (let's leave autoconf in for the time being, it's 
needed for some stuff) over to Aegis and Cook, can save about 5% of recurring 
developer time, after a short "adjustment" period of a 2-3 months, when 
productivity might suffer while people get used to better tools and forget 
limitations of the previous tools ;-).

Personally, I'm lucky not to need autoconf for my projects (I build on latest 
RedHat and on Windows only), so I'm just using cook and Aegis, and it works 
fine for both linux and windows builds. Windows builds need some wine 
trickery, but once you do it and put into scripts, with Aegis multiplatform 
support it becomes a breeze. Aegis will even tell you that say an integration 
build succeeded on Linux/GCC platform but failed on Windows platform, and 
then you're back to workarounds for your not-so-favourite Windows compiler 
:). Oh, I use BCC55, so I'm not complaining too much -- it was much worse 
with VC6.

Cheers, Kuba Ober


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Lars Gullik Bjønnes
Kuba Ober <[EMAIL PROTECTED]> writes:

I'll have a look at aegis.

At first glance it seems to be similar to BitKeeper? What are the
differences? (And why doesn't Linus want to use aegis?)

I'll go through the documentation.

-- 
Lgb


Re: Aegis (was: Re: [PATCH] use ParagraphList iterator for reading the doc)

2003-03-12 Thread Kuba Ober
On środa 12 marzec 2003 11:45 am, you wrote:
> On Wed, Mar 12, 2003 at 11:42:40AM -0500, Kuba Ober wrote:
> > I guess that one has to have an attitude of burning bridges behind
> > oneself in order to really enjoy Aegis. I had the pleasure of not having
> > a VCS at all in my development, and starting right on with Aegis. I
> > imagine that the CVS legacy may hurt, since your previous experience sort
> > of limits your field of view -- you don't see things that Aegis makes
> > possible. I, for one, find that there's a ton of things that Aegis just
> > does almost by itself, whereas CVS needs some scripting in order to do
> > that.
>
> Liek what?

0. You don't operate on the "diff" level. You operate on change level. Changes 
are self-contained units, like database transactions.
1. You don't diff by hand, aegis does diffing of only the files in the change 
for you.
2. The changes have to compile and build against your change, and against the 
baseline. CVS doesn't care. With Aegis, you never get a change that breaks 
builds!
3. If you specify it in your change attributes, the tests will be 
automatically run, and the change will fail to integrate if the tests fail. 
You don't have to invoke anything by hand, other than the aegis build command 
itself. Aegis makes sure that before an integration, the chosen tests are 
successful.
4. You always work on the local repository. You can integrate with the 
"server" any time you want. The "main repository" doesn't break your 
development -- you can merge  your change with changes to the repository as 
often or as rarely as you want. E.g. if you're working on a change in the 
"HEAD" branch, and HEAD changes, and you feel like doing another change, the 
changes will be isolated and you don't have to integrate or merge your 
previous change just in order to do a new, unrelated change. You control 
isolation level of your changes throughout the devleopment cycle, a mandatory 
merge will only be enforced before the actual build.
5. Branching is trivial and you don't need to worry much if you feel like 
branching -- just create a branch, that's it. You do it at home, your branch 
can be local, you can commit the branch to the server too.
6. Given proper diff/patch tools (say fhist), integrating development branches 
is a breeze, and the change model employed by Aegis makes sure that you won't 
break the build, even if you're cross-integrating several branches and 
changes, from several repositories.
7. It's very easy to share "unofficial" branches, within the same project 
framework, across developers, without having them committed to the "main" 
server. Any subset of repositories (remember, they are all and always local!) 
can have any subset of additional branches, there's no need for the "main" 
repository to be priviledged in any way in that respect. In fact, you can 
almost do anything you feel like without having any connection to the net. 
You can merge and integrate with "main" or any other server when and how you 
feel like.

I guess these are the main advantages. Here's how an imaginary session 
changing one file in lyx tree looks on Aegis:

# set the project to "HEAD"
$ ae_p lyx.1.4
# new change (with a GUI!)
$ tkaenc
# choose to work on that change (say it's change number 45)
$ ae_c 45
# go to the development directory
$ aecd
# let's edit the readme
$ aecp README
$ vi README
# let's wrap it up -- first do the diffs (otherwise the build will ask you to 
do it), then do the build [note that the build will do nothing here!], and 
finish the development
$ aed && aeb && aede
$ aedist -send | mail [EMAIL PROTECTED]

# now, let's have say John review that change, suppose he downloaded the 
change to a file called c44
$ cat c44 | aedist -receive
$ ae_p lyx.1.4
# john lists changes, and will see that change 45 awaits review
$ ael c
$ ae_c 45
# John wants to see the diffs, quite often that's sufficient
$ aed && aedless
# John gives his thumb-up for the change
$ aerpass
$ aedist -send | mail [EMAIL PROTECTED]

# okay, now it's up to Lars to do the integration -- let's say Lars gets the 
change from email as well -- email serves just as an example, these can go to 
the "main" repository automatically
$ cat c44r | aedist -receive
$ ae_p lyx.1.4
# Lars lists changes, and sees change 45 awaiting integration
$ ael c
$ ae_c 45diff
# let's make sure the change is actually Lars-clean ;-)
$ aed && aedless
# okay, it seems there's enough C++ and STL in it ;-), let's begin the 
integration
$ aeib
# build and integrate
$ aeb && aeipass

And that's it. Including formal review with documented rejection capability 
(the change goes back to the developer then), and repository administrator's 
final look and integration.

Power-users can have developer and administrator powers, for example, so that 
they can do a "full commit" (as in CVS) themselves. Lesser people, who are 
only developers, only do the development that lands in the main repository 
awaiting review, and then integration.