comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Open source Ada OS?
Date: Wed, 26 Jan 2011 17:02:46 -0600
Date: 2011-01-26T17:02:46-06:00	[thread overview]
Message-ID: <ihq96p$li0$1@munin.nbi.dk> (raw)
In-Reply-To: b1da7195-8f26-463e-a297-195131a615f0@j32g2000yqc.googlegroups.com

"Ludovic Brenta" <ludovic@ludovic-brenta.org> wrote in message 
news:b1da7195-8f26-463e-a297-195131a615f0@j32g2000yqc.googlegroups.com...
...
>CVS would not even help do that because CVS, being rubbish, has per-
>file histories as opposed to per-project history.

Per-project history is also rubbish. I've never seen any version control 
system that actually would solve my problems rather than replacing those 
problems with a large set of new ones.

In the entire history of RRSoftware, there have only been two projects: 
Janus/Ada and Claw (ignoring a few hobbyist things). But these aren't 
monolithic entities. Janus/Ada, especially, over its history consists of a 
dozen or so separate tools, several in multiple parts, targetting about 25 
different targets. (Many of those targets are obsolete now.) Different 
targets were/are released at different times. If you treated those as 
*separate* projects, then all of the shared files (the majority) end up 
duplicated; if you treat those as *one* project, then you lose the ability 
to have separate releases for different part of the project. And in either 
case, there is no automated support for files that are related (and need to 
be kept consistent) but have different contents. (An example of this latter 
is the target description packages; these all contain a set of types and 
constants whose names have to be the same but whose definitions are 
different for each target. Some also contain subprograms with different 
bodies for different targets.)

A proper version control system would provide automatic warnings to the 
owner of a file/subproject/whatever when a related file needs to be changed. 
No such thing existed (or exists, so far as I can tell), so we built our own 
as a front-end to PVCS (later converted to CVS). That just uses CVS as a 
fancy difference engine; file relationships are kept in our manager. The 
problem, of course is that the thing is fragile and monolithic.

But none of the new VCs make any serious attempt to solve this problem. 
Branching would do it if there was a way to keep multiple ends active at the 
same time, without restrictions, and in additional kept track of when one 
end is out-of-date with the others.

Merging, however is never a solution. It just moves the problem from 
whereever it is now to the merge process. And automated merging is a 
disaster waiting to happen (and it happens often in my experience) - 
different targets get merged, bug fixes disappear, and the like. And manual 
merging is not a solution: it is just too time-consuming.

A related issue is "freshening" of working directories. I never, ever want 
to trust that what is in the VC is correct. It *ought* to be, but it often 
isn't and as such I never want to assume it is correct. Thus getting of 
files from the VC must query whenever it is about to change a file and ask 
for approval (that process has saved me many times from reintroducing bugs).

Finally, like all worthwhile programming tools, it has to be written in Ada. 
:-) That way, *I* can port it to the targets I need it to run on, I can fix 
it if necessary, and so on.

OK, the last is much less of a requirement than the others, but I do have 
much less trust in software not written in Ada. I use some of course because 
I simply don't have time to write my own OS, browser, and accounting 
package. (I wish I did.)

                      Randy.












  reply	other threads:[~2011-01-26 23:02 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-25 21:08 Open source Ada OS? R. Tyler Croy
2011-01-25 21:33 ` Simon Clubley
2011-01-25 21:54   ` R. Tyler Croy
2011-01-26  0:37 ` anon
2011-01-26  1:54   ` Yannick Duchêne (Hibou57)
2011-01-26  8:36   ` Ludovic Brenta
2011-01-26 11:32     ` Yannick Duchêne (Hibou57)
2011-01-26 13:06       ` Ludovic Brenta
2011-01-26 23:02         ` Randy Brukardt [this message]
2011-01-26 23:58           ` Edward Fish
2011-01-27 22:29             ` Randy Brukardt
2011-01-27  8:41           ` Dmitry A. Kazakov
2011-01-27  9:23           ` Maciej Sobczak
2011-01-26 14:04       ` Georg Bauhaus
2011-01-28 11:32     ` anon
2011-01-27 17:53   ` Dirk Heinrichs
2011-01-28 10:57     ` anon
2011-01-28 11:22       ` Ludovic Brenta
2011-01-29 16:52         ` anon
2011-01-29 17:15           ` Simon Wright
2011-01-28 17:15       ` R. Tyler Croy
2011-01-30  9:48       ` Dirk Heinrichs
2011-01-30 12:11         ` Simon Wright
2011-01-26  5:13 ` Shark8
2011-01-26  7:44   ` Yannick Duchêne (Hibou57)
2011-01-26 22:48     ` Shark8
2011-01-26  8:27 ` Ludovic Brenta
2011-01-26 18:09 ` Warren
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox