OpenSolaris

Discussions Communities Projects Download Source Browser

Home » OpenSolaris Forums » tools » discuss

Thread: Distributed SCM requirements draft

Welcome, Guest Help
Login Login
Guest Settings Guest Settings
Reply to this Thread Reply to this Thread Search Forum Search Forum Back to Thread List Back to Thread List

Permlink Replies: 25 - Last Post: Feb 17, 2006 12:01 PM by: James Blackwell
Stephen Hahn
sch@eng.sun.com
Distributed SCM requirements draft
Posted: Dec 1, 2005 2:01 PM

  Click to reply to this thread Reply


As I mentioned a few weeks ago, we want to evaluate the various
distributed source code management systems available to see which are
a best fit for OpenSolaris. The following document outlines a roughly
ranked set of requirements to use in the evaluation. Thoughts,
corrections, and comments are welcomed.

- Stephen

----

ident "@(#)d-scm-requirements.txt 1.3 05/12/01 SMI"

OpenSolaris
DISTRIBUTED SOURCE CODE MANAGEMENT REQUIREMENTS [DRAFT]

1. Summary

This document identifies and explains the requirements for a
distributed source code management (SCM) solution to be used with
OpenSolaris. The requirements are grouped into three sets of
decreasing importance. It outlines a number of specific evaluations
that will be used to determine whether a candidate SCM meets the
various requirements.

2. Discussion

The requirements described below arise from a number of distinct
classes: some are social, in that the requirement is believe
necessary for successful use in the community; some are technical,
in that the requirement is believed necessary to successfully
produce software in a multi-project, multi-committer, multi-site
development organization; and some are economic, in that the
requirement is attempting to describe attributes that would limit
the costs of the ongoing use of the tool.

In an attempt to use neutral terms, we use the phrase "candidate
SCM" to describe the SCM solution we are evaluating and "current
SCM" to refer to the distributed SCM solution in use (inside Sun) at
present. (Not all consolidations participating in OpenSolaris use a
distributed SCM at present; their SCM requirements are not discussed
in this document.)

The requirements are ranked by necessity, using the terminology
proposed in IEEE Std 830-1998 [1].

2.1. "Essential" requirements

E0. Open source

To be considered for use by the OpenSolaris community, the
candidate SCM is expected to be available under an OSI-approved
license.

E1. Unbiased and disconnected distribution

Although a distributed SCM may choose to implement some form of
dependency relationship between source trees (such as a
"parent-child" convention) that relationship must not need to be
continuously available for sensible SCM operation. Moreover,
the candidate SCM must support source code updates between two
distinct repositories with a common ancestor that have had no
other contact. Sensible operation for disconnected use
encompasses all SCM operations that act only on the local
repository: creation, modification, or deletion of files or
directories or the metadata describing these objects or the
changes to them.

E2. Networked operation

The candidate SCM must be able to operate in a sensible and well
performing manner between two hosts in separate administrative
domains. Beyond the data contained within the candidate SCM's
representation, the only common administrative requirement
should be a credential identifying the remote operator
initiating the transaction to the other host.

One mechanism that meets this requirement is to tunnel the
candidate SCM operation through ssh(1). Candidate SCMs that use
an implementation that requires domains to change security
policies to open unusual or believed risky network ports will be
considered to be minimally compliant with this requirement.

Performance measurements will be used to compare candidates, as
outlined below. A candidate SCM with performance results in the
bottom third of all candidates will be deemed to have failed to
meet this requirement.

E3. Interface stability and completeness

The storage representation, command line interfaces, network
protocols, and hooks interfaces should be documented and have
some level of declared commitment. The state of the storage
representation and the operations that modify it should be well
defined, so that use with advanced file system capabilities can
be assessed for hazards. (For example, consistent use with file
system snapshot capabilities.)

E4. Standard operations and transactions

The candidate SCM is expected to support rename and deletion
transactions at the file and directory levels. A
history-preserving copy operation, followed by a delete
operation, may be considered equivalent to a rename;
equivalency, and the reasons for rename omission, are to be
assessed and documented by the evaluating engineer.

E5. Per changeset metadata.

The candidate SCM must be able to associate, at a minimum, an
unstructured text fragment with each changeset.

2.2. "Conditional" requirements

C6. Ease of use

The candidate SCM should be easy to install in a reasonably
self-contained fashion. In principle, shipment in an
OpenSolaris consolidation should be possible with a finite
investment of resources.

The primary interfaces should be understandable to a user
familiar with distributed SCM concepts.

The candidate SCM should offer some assistance with conflict
resolution during an update, the issuance of source code
patches, and the ability to browse the source tree via a web
server.

The candidate SCM should be able to undo the application of a
specific changeset ("backout") atomically and easily.

C7. "No dedicated server" operational mode

In the interests of machine resource conservation, the candidate
SCM should have a mode in which it can operate without a
continuously running server process. This mode may have
concurrency restrictions or performance limitations compared to
its primary server mode.

For instance, within a large administrative domain, it may be
more convenient to utilize NFS and a shared identity
infrastructure than to rely on the networked operating mode
required by E2. A candidate SCM which can sensibly operate in a
pure OpenSolaris NFS environment without the establishment of a
dedicated server process would meet this requirement.

C8. Tool community health

The community or author of the candidate SCM needs to be active
and engaged with their user population. The ability of the
candidate SCM's community to absorb, directly or through a
liaison, the defects and feature requests of the OpenSolaris
community should be estimated, preferably by a direct inquiry to
the candidate SCM community.

C9. OpenSolaris community implementation expertise

One or more contributors within the OpenSolaris community need
to be able to assess potential defects in the implementation of
the candidate SCM and potentially participate in the development
of new features or supporting tools for the candidate SCM.

C10. Interface extensibility

Beyond the requirements of E3, an extensible interface, so that
OpenSolaris-specific tools might be integrated with SCM
operations is desired. Such an interface might be composed of a
documented "hooks" interface, a documented library interface, or
some other modular approach. An extensive hooks interface, with
hook evaluations able to terminate operations, is a strongly
desired attribute in a candidate SCM; a candidate SCM with such
an interface will be considered to meet fully this requirement.

C11. Transactional operations and corruption recovery

The operations on the candidate repository should have defined
semantics, in particular identifying non-atomic transactions and
mechanisms for recovery from a corrupted repository.

C12. Content generality

The candidate SCM should be able to represent safely and track
files with binary content, in addition to text files.

2.3 "Optional" requirements

O13. Partial trees

The structure of the ON consolidation and the current SCM
solution allow a contributor to work on specific subsets of the
source tree in a supported fashion. This requirement states
that, while such a mode with support for expressing dependencies
between files and directories is valuable, support for partial
tree repositories is not necessary.

O14. Per-file histories

The current SCM uses SCCS as a per-file revision storage format.
As such, each file has an individual history. This feature
allows the combination of disjoint issues to be addressed in a
single commit without connecting the per-file history. It is
believed that the ability to meet the other requirements stated
in this document is sufficiently more valuable than the support
of per-file revision histories. Moreover, the construction of
per-file histories in reporting and browsing tools can be
accomplished by convention in many cases.

That is to say, a candidate SCM that meets E5 is sufficient.

3. Evaluations

We anticipate a number of qualitative and quantitative tests to
evaluate the satisfaction of the various requirements, where a
"meets" or "does not meet" result is not applicable.

3.1. Representational and performance criteria

These criteria focus on the ability of the candidate SCM to
represent a large, long-running, and active source tree. The ON
consolidation represents more than 25 000 changesets by over 1300
committers against approximately 40 000 files.

The expected set of meaningful operations for performance evaluation
are:

- first pull/clone operation,
- subsequent pull/update operation, and
- push/commit operation.

Performance results for the set of operations will be captured for
three distinct scenarios: within a campus, across SWAN between
sites, and between two Internet sites. SWAN measurements will be
captured between each of Menlo Park, CA and Burlington, MA, Manchester,
UK, and Beijing, PRC. (Equivalent sites may be added or
substituted.) For comparison, results will be phrased both
as as a percentage of sustained bandwidth, and as absolute time
elapsed (for an identical pair of endpoints). Baseline absolute
time comparisons will be made against standard and "turbo" TeamWare
for within-SWAN scenarios, and against an rsync copy of the same
data for all scenarios.

The candidate SCM will be evaluated for data integrity by
interruption of the set of operations by signal and by machine
failure.

The safety of the candidate SCM with respect to file system
capabilities will be evaluated using ZFS snapshot/clone technology
for safe repository copies.

3.2. Implementation criteria

The candidate SCM implementation will be assessed by a design and
code review by an OpenSolaris contributor with expertise in the
implementation language of the candidate SCM.

3.3. Tools criteria

If available, the candidate SCM is expected to provide or identify a
graphical merge program that can be used to resolve conflicts
resulting from an update operation. In the case that no known
program can be used, the evaluating contributor will assess the work
necessary to use one of the standard graphical merge programs.

4. References

[1] IEEE Std 830-1998, "IEEE Recommended Practice for Software
Requirements Specifications", 1998.

--
Stephen Hahn, PhD Solaris Kernel Development, Sun Microsystems
stephen dot hahn at sun dot com http://blogs.sun.com/sch/
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



gman

Posts: 1,901
From: NZ

Registered: 6/16/05
Re: Distributed SCM requirements draft
Posted: Dec 11, 2005 7:33 PM   in response to: Stephen Hahn

  Click to reply to this thread Reply

Hi,

Though perhaps more a 'Social' question, I'm rather interested to see
how things stand from a process point of view with the distributed
requirement on a source code management system.

Will there be tools to easily publish child workspaces? Will those child
workspaces be publically available? Will changes to those child
workspaces be trackable through some sort of change set hook [ie.
loginfo for CVS?] - ie. how is all this going to work when there's the
potential for contributions outside and inside Sun's firewall, and what
steps/discussions are happening to make this the transparent process
that it needs to be?


Glynn


On Thu, 2005-12-01 at 14:01 -0800, Stephen Hahn wrote:
> As I mentioned a few weeks ago, we want to evaluate the various
> distributed source code management systems available to see which are
> a best fit for OpenSolaris. The following document outlines a roughly
> ranked set of requirements to use in the evaluation. Thoughts,
> corrections, and comments are welcomed.
>
> - Stephen
>
> ----
>
> ident "@(#)d-scm-requirements.txt 1.3 05/12/01 SMI"
>
> OpenSolaris
> DISTRIBUTED SOURCE CODE MANAGEMENT REQUIREMENTS [DRAFT]
>
> 1. Summary
>
> This document identifies and explains the requirements for a
> distributed source code management (SCM) solution to be used with
> OpenSolaris. The requirements are grouped into three sets of
> decreasing importance. It outlines a number of specific evaluations
> that will be used to determine whether a candidate SCM meets the
> various requirements.
>
> 2. Discussion
>
> The requirements described below arise from a number of distinct
> classes: some are social, in that the requirement is believe
> necessary for successful use in the community; some are technical,
> in that the requirement is believed necessary to successfully
> produce software in a multi-project, multi-committer, multi-site
> development organization; and some are economic, in that the
> requirement is attempting to describe attributes that would limit
> the costs of the ongoing use of the tool.
>
> In an attempt to use neutral terms, we use the phrase "candidate
> SCM" to describe the SCM solution we are evaluating and "current
> SCM" to refer to the distributed SCM solution in use (inside Sun) at
> present. (Not all consolidations participating in OpenSolaris use a
> distributed SCM at present; their SCM requirements are not discussed
> in this document.)
>
> The requirements are ranked by necessity, using the terminology
> proposed in IEEE Std 830-1998 [1].
>
> 2.1. "Essential" requirements
>
> E0. Open source
>
> To be considered for use by the OpenSolaris community, the
> candidate SCM is expected to be available under an OSI-approved
> license.
>
> E1. Unbiased and disconnected distribution
>
> Although a distributed SCM may choose to implement some form of
> dependency relationship between source trees (such as a
> "parent-child" convention) that relationship must not need to be
> continuously available for sensible SCM operation. Moreover,
> the candidate SCM must support source code updates between two
> distinct repositories with a common ancestor that have had no
> other contact. Sensible operation for disconnected use
> encompasses all SCM operations that act only on the local
> repository: creation, modification, or deletion of files or
> directories or the metadata describing these objects or the
> changes to them.
>
> E2. Networked operation
>
> The candidate SCM must be able to operate in a sensible and well
> performing manner between two hosts in separate administrative
> domains. Beyond the data contained within the candidate SCM's
> representation, the only common administrative requirement
> should be a credential identifying the remote operator
> initiating the transaction to the other host.
>
> One mechanism that meets this requirement is to tunnel the
> candidate SCM operation through ssh(1). Candidate SCMs that use
> an implementation that requires domains to change security
> policies to open unusual or believed risky network ports will be
> considered to be minimally compliant with this requirement.
>
> Performance measurements will be used to compare candidates, as
> outlined below. A candidate SCM with performance results in the
> bottom third of all candidates will be deemed to have failed to
> meet this requirement.
>
> E3. Interface stability and completeness
>
> The storage representation, command line interfaces, network
> protocols, and hooks interfaces should be documented and have
> some level of declared commitment. The state of the storage
> representation and the operations that modify it should be well
> defined, so that use with advanced file system capabilities can
> be assessed for hazards. (For example, consistent use with file
> system snapshot capabilities.)
>
> E4. Standard operations and transactions
>
> The candidate SCM is expected to support rename and deletion
> transactions at the file and directory levels. A
> history-preserving copy operation, followed by a delete
> operation, may be considered equivalent to a rename;
> equivalency, and the reasons for rename omission, are to be
> assessed and documented by the evaluating engineer.
>
> E5. Per changeset metadata.
>
> The candidate SCM must be able to associate, at a minimum, an
> unstructured text fragment with each changeset.
>
> 2.2. "Conditional" requirements
>
> C6. Ease of use
>
> The candidate SCM should be easy to install in a reasonably
> self-contained fashion. In principle, shipment in an
> OpenSolaris consolidation should be possible with a finite
> investment of resources.
>
> The primary interfaces should be understandable to a user
> familiar with distributed SCM concepts.
>
> The candidate SCM should offer some assistance with conflict
> resolution during an update, the issuance of source code
> patches, and the ability to browse the source tree via a web
> server.
>
> The candidate SCM should be able to undo the application of a
> specific changeset ("backout") atomically and easily.
>
> C7. "No dedicated server" operational mode
>
> In the interests of machine resource conservation, the candidate
> SCM should have a mode in which it can operate without a
> continuously running server process. This mode may have
> concurrency restrictions or performance limitations compared to
> its primary server mode.
>
> For instance, within a large administrative domain, it may be
> more convenient to utilize NFS and a shared identity
> infrastructure than to rely on the networked operating mode
> required by E2. A candidate SCM which can sensibly operate in a
> pure OpenSolaris NFS environment without the establishment of a
> dedicated server process would meet this requirement.
>
> C8. Tool community health
>
> The community or author of the candidate SCM needs to be active
> and engaged with their user population. The ability of the
> candidate SCM's community to absorb, directly or through a
> liaison, the defects and feature requests of the OpenSolaris
> community should be estimated, preferably by a direct inquiry to
> the candidate SCM community.
>
> C9. OpenSolaris community implementation expertise
>
> One or more contributors within the OpenSolaris community need
> to be able to assess potential defects in the implementation of
> the candidate SCM and potentially participate in the development
> of new features or supporting tools for the candidate SCM.
>
> C10. Interface extensibility
>
> Beyond the requirements of E3, an extensible interface, so that
> OpenSolaris-specific tools might be integrated with SCM
> operations is desired. Such an interface might be composed of a
> documented "hooks" interface, a documented library interface, or
> some other modular approach. An extensive hooks interface, with
> hook evaluations able to terminate operations, is a strongly
> desired attribute in a candidate SCM; a candidate SCM with such
> an interface will be considered to meet fully this requirement.
>
> C11. Transactional operations and corruption recovery
>
> The operations on the candidate repository should have defined
> semantics, in particular identifying non-atomic transactions and
> mechanisms for recovery from a corrupted repository.
>
> C12. Content generality
>
> The candidate SCM should be able to represent safely and track
> files with binary content, in addition to text files.
>
> 2.3 "Optional" requirements
>
> O13. Partial trees
>
> The structure of the ON consolidation and the current SCM
> solution allow a contributor to work on specific subsets of the
> source tree in a supported fashion. This requirement states
> that, while such a mode with support for expressing dependencies
> between files and directories is valuable, support for partial
> tree repositories is not necessary.
>
> O14. Per-file histories
>
> The current SCM uses SCCS as a per-file revision storage format.
> As such, each file has an individual history. This feature
> allows the combination of disjoint issues to be addressed in a
> single commit without connecting the per-file history. It is
> believed that the ability to meet the other requirements stated
> in this document is sufficiently more valuable than the support
> of per-file revision histories. Moreover, the construction of
> per-file histories in reporting and browsing tools can be
> accomplished by convention in many cases.
>
> That is to say, a candidate SCM that meets E5 is sufficient.
>
> 3. Evaluations
>
> We anticipate a number of qualitative and quantitative tests to
> evaluate the satisfaction of the various requirements, where a
> "meets" or "does not meet" result is not applicable.
>
> 3.1. Representational and performance criteria
>
> These criteria focus on the ability of the candidate SCM to
> represent a large, long-running, and active source tree. The ON
> consolidation represents more than 25 000 changesets by over 1300
> committers against approximately 40 000 files.
>
> The expected set of meaningful operations for performance evaluation
> are:
>
> - first pull/clone operation,
> - subsequent pull/update operation, and
> - push/commit operation.
>
> Performance results for the set of operations will be captured for
> three distinct scenarios: within a campus, across SWAN between
> sites, and between two Internet sites. SWAN measurements will be
> captured between each of Menlo Park, CA and Burlington, MA, Manchester,
> UK, and Beijing, PRC. (Equivalent sites may be added or
> substituted.) For comparison, results will be phrased both
> as as a percentage of sustained bandwidth, and as absolute time
> elapsed (for an identical pair of endpoints). Baseline absolute
> time comparisons will be made against standard and "turbo" TeamWare
> for within-SWAN scenarios, and against an rsync copy of the same
> data for all scenarios.
>
> The candidate SCM will be evaluated for data integrity by
> interruption of the set of operations by signal and by machine
> failure.
>
> The safety of the candidate SCM with respect to file system
> capabilities will be evaluated using ZFS snapshot/clone technology
> for safe repository copies.
>
> 3.2. Implementation criteria
>
> The candidate SCM implementation will be assessed by a design and
> code review by an OpenSolaris contributor with expertise in the
> implementation language of the candidate SCM.
>
> 3.3. Tools criteria
>
> If available, the candidate SCM is expected to provide or identify a
> graphical merge program that can be used to resolve conflicts
> resulting from an update operation. In the case that no known
> program can be used, the evaluating contributor will assess the work
> necessary to use one of the standard graphical merge programs.
>
> 4. References
>
> [1] IEEE Std 830-1998, "IEEE Recommended Practice for Software
> Requirements Specifications", 1998.
>

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



benr

Posts: 917
From:

Registered: 4/28/05
Re: Distributed SCM requirements draft
Posted: Dec 20, 2005 5:29 PM   in response to: Stephen Hahn

  Click to reply to this thread Reply

I'm curious where this process is leading. I don't know of any tool that meets all these requirements except perhaps BitKeeper. Subversion certainly doesn't meet the requirement outlined in C7, even if it is distributed.

This all sounds more like a plan to create a new SCM rather than adopt an existing one, unless there is a tool in the back of peoples minds that I'm unaware of.

Beyond just this, however, I think the scope of this project needs to be clearly defined from the outset. Are we looking for a tool that existing TeamWare gates could pump incrementals to or a single shared internal/external source code management system that would phase out TeamWare? The vibe I'm getting is for the latter.

benr.

gman

Posts: 1,901
From: NZ

Registered: 6/16/05
Re: Re: Distributed SCM requirements draft
Posted: Dec 20, 2005 8:57 PM   in response to: benr

  Click to reply to this thread Reply

Hey,

On Tue, 2005-12-20 at 17:29 -0800, Ben Rockwood wrote:
> Beyond just this, however, I think the scope of this project needs to
> be clearly defined from the outset. Are we looking for a tool that
> existing TeamWare gates could pump incrementals to or a single shared
> internal/external source code management system that would phase out
> TeamWare? The vibe I'm getting is for the latter.

On top of this, I'd like a simple question answered - Are we trying to
fit a source code management solution to the process, or a process to
the source code management system? It feels like the first and I have
mixed concerns as to whether that's a good idea or not, in terms of
community development [1]


Glynn

[1] My opinion probably doesn't count in terms of ON development, but
just trying to see the side from a community point of view.

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



wesolows

Posts: 818
From: San Francisco CA US

Registered: 3/9/05
Re: Re: Distributed SCM requirements draft
Posted: Dec 21, 2005 10:47 AM   in response to: gman

  Click to reply to this thread Reply

On Wed, Dec 21, 2005 at 03:57:26PM +1100, Glynn Foster wrote:

> On top of this, I'd like a simple question answered - Are we trying to
> fit a source code management solution to the process, or a process to
> the source code management system? It feels like the first and I have
> mixed concerns as to whether that's a good idea or not, in terms of
> community development [1]

It's never correct to choose tools and then try to fit a process to
them. Ignoring the fundamental problems with that approach, the
immediate practical question is "If I'm not choosing tools to support
a process, on what criteria will I base that selection?" In practice
the answers tend to fall into two categories: inertia and fad worship.
We're explicitly not allowing inertia to drive the choice: TeamWare in
its current form fails to meet the essential requirements; it's clear
that these were not written with the advance intent to select
TeamWare. Fad worship is at best shortsighted and intellectually
lazy, entirely inappropriate for a project team desirous of long-term
success.

The requirements reflect the need for development widely separated by
administrative domains, poor connectivity, user namespace, and so on.
I don't understand how the requirements in question pose a barrier to
community development; in particular E0, E1, and E2 seem intended
explicitly to remove potential barriers to non-Sun participation.
What changes or additions do you recommend?

--
Keith M Wesolowski "Sir, we're surrounded!"
Solaris Kernel Team "Excellent; we can attack in any direction!"
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



gman

Posts: 1,901
From: NZ

Registered: 6/16/05
Re: Re: Distributed SCM requirements draft
Posted: Dec 21, 2005 10:12 PM   in response to: wesolows

  Click to reply to this thread Reply

Hey,

On Wed, 2005-12-21 at 10:47 -0800, Keith M Wesolowski wrote:
> It's never correct to choose tools and then try to fit a process to
> them. Ignoring the fundamental problems with that approach, the
> immediate practical question is "If I'm not choosing tools to support
> a process, on what criteria will I base that selection?" In practice
> the answers tend to fall into two categories: inertia and fad worship.
> We're explicitly not allowing inertia to drive the choice: TeamWare in
> its current form fails to meet the essential requirements; it's clear
> that these were not written with the advance intent to select
> TeamWare. Fad worship is at best shortsighted and intellectually
> lazy, entirely inappropriate for a project team desirous of long-term
> success.

You're absolutely right. You can't choose the tools without a process,
but neither can you choose a process without the tools. Maybe I'm taking
an overly simplistic view of how to approach this, but there's been very
little discussion on how the *process* is actually supposed to work.

> The requirements reflect the need for development widely separated by
> administrative domains, poor connectivity, user namespace, and so on.
> I don't understand how the requirements in question pose a barrier to
> community development; in particular E0, E1, and E2 seem intended
> explicitly to remove potential barriers to non-Sun participation.
> What changes or additions do you recommend?

I just like to see some discussion on how people think this might work.
The only mail that came close to it was Roy's mail on the CAB discuss
list -

http://www.opensolaris.org/jive/thread.jspa?threadID=2806&tstart=15

I don't want to be a negative blocker on progress [I appreciate the work
being done], but I don't even understand the process coming from within
Sun - how do we expect a community to understand and adopt it? At the
moment, they're living in a relatively sheltered 'throw their patches
over the wall' environment.

Maybe I'm totally off base with this....shrug.


Glynn


_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



ian

Posts: 1,710
From: NZ

Registered: 4/27/05
Re: Re: Distributed SCM requirements draft
Posted: Dec 21, 2005 10:28 PM   in response to: gman

  Click to reply to this thread Reply

Glynn Foster wrote:

>Hey,
>
>On Wed, 2005-12-21 at 10:47 -0800, Keith M Wesolowski wrote:
>
>
>>It's never correct to choose tools and then try to fit a process to
>>them. Ignoring the fundamental problems with that approach, the
>>immediate practical question is "If I'm not choosing tools to support
>>a process, on what criteria will I base that selection?" In practice
>>the answers tend to fall into two categories: inertia and fad worship.
>>We're explicitly not allowing inertia to drive the choice: TeamWare in
>>its current form fails to meet the essential requirements; it's clear
>>that these were not written with the advance intent to select
>>TeamWare. Fad worship is at best shortsighted and intellectually
>>lazy, entirely inappropriate for a project team desirous of long-term
>>success.
>>
>>
>
>You're absolutely right. You can't choose the tools without a process,
>but neither can you choose a process without the tools. Maybe I'm taking
>an overly simplistic view of how to approach this, but there's been very
>little discussion on how the *process* is actually supposed to work.
>
>
Is there _A_ process? Or does each consolidation follow its own?

Ian

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



wesolows

Posts: 818
From: San Francisco CA US

Registered: 3/9/05
Re: Re: Distributed SCM requirements draft
Posted: Dec 22, 2005 9:16 AM   in response to: ian

  Click to reply to this thread Reply

On Thu, Dec 22, 2005 at 07:28:33PM +1300, Ian Collins wrote:

> Is there _A_ process? Or does each consolidation follow its own?

There is a single process with numerous steps, most of which can be
omitted under some circumstances. Consolidation managers may in some
cases decide not to require steps they believe are inappropriate or
inapplicable. It would be excessively and needlessly confusing,
however, if every consolidation had a completely different process.

--
Keith M Wesolowski "Sir, we're surrounded!"
Solaris Kernel Team "Excellent; we can attack in any direction!"
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



Mike Kupfer
kupfer@athyra.sfbay....
Re: Re: Distributed SCM requirements draft
Posted: Dec 21, 2005 10:51 AM   in response to: gman

  Click to reply to this thread Reply

>>>>> "Glynn" == Glynn Foster <Glynn dot Foster at Sun dot COM> writes:

Glynn> Are we trying to fit a source code management solution to the
Glynn> process, or a process to the source code management system?

I think it's more the first, but some sort of feedback cycle and
iteration might be needed.

Glynn> It feels like the first and I have mixed concerns as to whether
Glynn> that's a good idea or not, in terms of community development

Obviously there's a downside to picking a tool or development model that
the external community is not familiar with. On the other hand, if the
commonly used tools and development practices don't scale to something
the size of ON, that's a problem, too.

I'd encourage anyone who thinks there are missing requirements, or who
thinks that some of the stated requirements are unnecessary, to speak
up. Be specific (what requirement should be added or changed, and why).

The current process and SCM requirements are the evolutionary result of
13+ years using Teamware. They can evolve some more to meet the needs
of OpenSolaris.

cheers,
mike
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



Mike Kupfer
kupfer@athyra.sfbay....
Re: Re: Distributed SCM requirements draft
Posted: Dec 21, 2005 10:29 AM   in response to: benr

  Click to reply to this thread Reply

>>>>> "Ben" == Ben Rockwood <benr at cuddletech dot com> writes:

Ben> I'm curious where this process is leading. I don't know of any
Ben> tool that meets all these requirements except perhaps BitKeeper.

Are you referring to all the listed requirements, or just the "must
have" list?

Ben> This all sounds more like a plan to create a new SCM rather than
Ben> adopt an existing one,

Ick, no. I can't speak for Stephen (who is away this week), but my
understanding of the requirements is they are based on the ON group's
13+ years experience of using Teamware: what is needed to support a very
large, globally dispersed, development community.

I don't know of anyone who wants to create a new SCM. We may find that
none of the existing tools meets the stated requirements. In that case,
I see the options as relaxing the stated requirements, improving
existing tools, or both.

Ben> Are we looking for a tool that existing TeamWare gates could pump
Ben> incrementals to or a single shared internal/external source code
Ben> management system that would phase out TeamWare?

We're looking for a single system for a given consolidation. The
long-term goal is to have the master workspace be external.

Not all the consolidations need use the same SCM. Consolidations with
smaller code bases or smaller numbers of contributors might not care
about some of the requirements in the requirements list.

mike

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



Stephen Hahn
sch@eng.sun.com
Re: Re: Distributed SCM requirements draft
Posted: Jan 6, 2006 4:02 PM   in response to: Mike Kupfer

  Click to reply to this thread Reply


I think there are two key concerns raised in this thread. I'll deal
with them by complexity.

A. Are we proposing writing a new SCM, as the complete set of
requirements seem essentially unsatisfiable?

No. There is no intent to start a "next next generation SCM"
development project as a result of this requirements draft. There
is a large pool of OSS (or potentially OSS for the TeamWare case)
distributed SCM solutions; we are seeking to find the best fit to
current distributed development practices as embodied by the
consolidations presently using TeamWare. Once that best fit
system has been selected, the opensolaris.org community might
choose to become more involved with the development of that
system, if critical missing capabilities become evident. However,
we cannot just sit and wait for the perfect SCM solution to come
along--we may have to choose one that lacks some of the features
TeamWare has (in the happy little world of the SWAN) and switch
and improve things over time.

B. Are the tools driving the process, or the process the tools?

The process is driving the tools choice. There have been a number
of assertions about how the tools choice mandates the relationship
between developers, the nature of shared state, or even the warp
and weft of the social fabric of the entire developer community.
(Such ideas are interesting, and I would love to read any extended
essays (with citations) that make the connections explicit and
complete the obvious analogy to the Sapir-Whorf hypothesis in
linguistics.) However, I think it would be more helpful to talk
about how the typical developer interaction goes on today, at
least for ON. (I know some of the other consolidations use this
exact model, but with different tools, and some eliminate certain
of the checks or restrictions in the ON process.)

1. The developer takes a child of the repository. If this is
his/her first child for the release, they are automatically
added to the alias that gets notices of commits and undos.

2. The developer fixes one or more bugs.

3. The developer solicits code reviews from nearby peers, from
remote peers, from area experts--whatever is appropriate for
the complexity/risk associated with changes in that area.
This step may be repeated until the reviewers are satisfied
with the proposed fix.

4. The developer submits a "request to integrate" to a specific
member of the "change review team" (CRT), identifying the bugs
addressed, the workspace with the changes, and the code
reviewers (and a little more about risk, impact, and other
details about the change). This CRT member may not be
one of the listed code reviewers. The CRT member may accept
the request, or seek more detail, or take an action to
reassign to a more expert CRT member. He/she may also request
additional relevant reviewers examine the change prior to
approval. (There are more outcomes: an interface change may
require ARC approval, etc.) If the request is accepts, then
we say the "RTI is approved".

5. With an approved RTI, the developer can connect to the gate
repository and integrate. Directly--meaning that there are
over 800 active committers to just ON.

While aspects of this process may need to be modified or need
further web support (like finding a code reviewer), it's our
intent for ON to preserve the "many committers" model. In fact, I
assess that a number of the folks submitting code changes would
be committers if we had already resolved the distributed SCM
choice.

Now, you could pretty easily argue that any SCM can handle the
above series of steps--and you would be mostly correct. There are
three reasons that distributed SCM tools tend to be very helpful:

1. Clone repositories. The notion of a read-only clone
repository that people can follow and pull from insulates the
bulk of developers from broken integrations (because the
gatekeepers undo them in the main repository before they hits
the clones.) Clones are also nice to have in the different
geographies, as it means that the slow link is only used for
commits (which tend to be small), while the clone's pulls can
be automated.

With a distributed SCM, being a child of the clone isn't a
penalty; one simply commits to the main repository.

2. Trial commits. Even though the release team catches build
errors quickly, it's best--least other people's time
wasted--if such errors are never introduced. One such
technique is to do a "trial commit" to a new copy of the main
repository, and then do a build of the copy. If you forgot a
file creation, rename, or deletion in your commit, this
technique will catch it.

3. Projects. Large changesets that touch many files across the
system, and involve multiple developers to construct, need to
manage the incoming rate of change from the main release to
make progress. Such efforts typically construct a "project
gate", a child repository that the project team in turn takes
children from and commit to as the project proceeds.

There were numerous project gates running through 5.10 for ON;
I can think of a few for kernel and networking for Nevada
already.

The main point for the distributed SCM is that (a) these are all
just clone/child repository operations and (b) the release team
takes no special action to enable any of them, without reference
to the number required.

Obviously, I am happy to hear further questions or comments.

- Stephen

--
Stephen Hahn, PhD Solaris Kernel Development, Sun Microsystems
stephen dot hahn at sun dot com http://blogs.sun.com/sch/
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



oxygene

Posts: 64
From:

Registered: 6/14/05
Re: Distributed SCM requirements draft
Posted: Jan 6, 2006 8:45 AM   in response to: benr

  Click to reply to this thread Reply

> I'm curious where this process is leading. I don't
> know of any tool that meets all these requirements
> except perhaps BitKeeper.
I'm taking a look at these with monotone (http://www.venge.net/monotone) as candidate here:

E0: yes. monotone is GPL
E1: yes. it works peer to peer between nodes, no parent-child relation exists apart from default server settings, and potentially a central server by decree of the users
E2: yes (in a branch). monotone has its own, efficient protocol. there's a branch that provides support for tunneling through ssh (or through pipes in general). (iirc) not merged as of yet mostly because the win32 side of that feature is lacking.
E3: limited. protocol, storage layout and hook scripts are still subject to change, but developers care for stability (except when it really gets in the way) and always provide migration guides (for hooks) and tools (for storage)
E4: yes. supports transactional and versioned rename and delete of files. support for directories is in progress (soon finished)
E5: yes. monotone allows many "certs" per revision which are cryptographically signed by the issuer. they are unchangeable (due to synchronization issues in distributed designs). certs are key/value pairs (textfields)
C6: yes. single binary, some info file and locales. extensive documentation. UI as simple as devs and users could do it. 3way merge integrated, hooks for graphical conflict resolution tools. webtools exist but may need refinement. reverting a changeset works by applying the inverse (monotone takes care of that)
C7: yes. monotone works on sqlite databases. concurrency is limited, but it can be done over NFS. may need improved error resolution
C8: yes. the developers are very active and helpful on the mailing list and on IRC. many changes in the tool happened because of user needs.
C9: TBD
C10: yes. monotone provides an stdio interface by which one monotone process can do many separate jobs. pretty standardized interface with computer parsable output. afaik termination of operations is not possible at this time
C11: yes. the database has ACID properties. every full checkout contains exactly the same dataset, so that fallback/syncback provides the same view again
C12: yes. internally monotone keeps everything as binary and stores revisions per xdelta (binary diff). content encoding conversion (CR/LF, utf8<->other encodings) can be done by monotone on a per file basis, defaulting to off.
O13: yes. called "restrictions". partial commits etc. work, partial checkout is work in progress.
O14: limited. not directly, but per-file caching of revision numbers could be implemented

that makes one unanswered (C9 - the one about people in the opensolaris community taking care of things - can't happen yet), and two limited (O14 - per file history, E3 - protocol stability. the latter being a big issue).

size might be an issue, but there is a means to cache "inode signatures" in a checkout to shortcut most operations (mostly diff and all that depend on it) as long as the inode signature (inode number, date, size, ...) stays the same. might not work with checkouts on an NFS share (but with checkouts from a repository on an NFS share, naturally)

there is one big change in repository format soon (see E3, for the curious, see http://lists.gnu.org/archive/html/monotone-devel/2005-11/msg00102.html or search for "rosters" on that mailinglist), which will fix many small issues (certain merge scenarios, ...), but I don't think that the decision and some kind of migration would happen over the next two weeks anyway.
user experience shouldn't change too much, so it should be possible to take a look at things right now already and get a feel about the general feasibility and necessary changes.


patrick mauritz

Stephen Hahn
sch@eng.sun.com
Re: Re: Distributed SCM requirements draft
Posted: Jan 6, 2006 3:21 PM   in response to: oxygene

  Click to reply to this thread Reply

* Patrick Mauritz <oxygene at studentenbude dot ath dot cx> [2006-01-06 08:51]:
> I'm taking a look at these with monotone (http://www.venge.net/monotone) as candidate here:

Patrick,

Thanks; this summary is very helpful.

1. I suppose one thing that would be interesting would be timing for
trivial operations, like taking a recent drop of the ON sources,
importing them into a repository, and then doing some timing of
pulling a child/clone on local filesystems or over a LAN.

2. Do you know of a project or group of folks using Monotone--or what
you've been using it for?

Cheers
Stephen

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



oxygene

Posts: 64
From:

Registered: 6/14/05
Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 12:39 AM   in response to: Stephen Hahn

  Click to reply to this thread Reply

> 1. I suppose one thing that would be interesting would be timing for
> trivial operations, like taking a recent drop of the ON sources,
> importing them into a repository, and then doing some timing of
> pulling a child/clone on local filesystems or over a LAN.
for monotone, the topology is a bit different: every user has a database (literally, it's an sqlite file), which is the repository. you can checkout from databases (which is a local operation, always), and you can push/pull/sync between databases (which is a remote operation).
so a checkout from remote is always a two-step operation, first pull, then checkout. this is deliberate, as sort of a "firewall" between the checkout and remote data.

I'd like to collect a bunch of operations that are of interest before benchmarking. things that come to mind:

- sync two repositories (might be the same as checkout for some tools - not a good benchmark to compare different tools because of the huge differences in what's transferred, but might still be interesting)
- checkout a full tree (with unpacking a tarfile of the same dataset as comparison)
- changing a couple of files, diff (with both "all optimizations" the tool provides, and none), multiple times for cold and hot cache behaviour
- changing a couple of files, adding some, renaming some, "status" (or whatever it is to get an overview of changed files, without the diffs)
- commit
- sync to server
- (repeat change + commit step multiple times)
- sync to server (multiple commits)
- checkout old tree, update with 1 commit
- checkout old tree, update to newest (all commits)
- annotate a file (if available)

anything else?

> 2. Do you know of a project or group of folks using Monotone--or what
> you've been using it for?
http://www.venge.net/monotone/wiki/ProjectsUsingMonotone
as you see, all of them are relatively small, both in number of revisions and number of files, at least compared to opensolaris.

I use monotone for a couple of small trees (in the dozens of files), and I also used it to track the opensolaris source drops, though I'm currently waiting for the rosters branch (that storage redesign) before I start on that work again, as it should fix a couple of things.

it took 5-10minutes for the commit of each opensolaris revision, but it's a special case because I had new trees, so the inode fingerprint optimization can't kick in. with fingerprints, it only has to stat each file that is unchanged, without them it has to run them through sha1.


patrick mauritz

alanbur

Posts: 1,218
From:

Registered: 3/9/05
Re: Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 2:03 AM   in response to: oxygene

  Click to reply to this thread Reply

Patrick Mauritz wrote:

> for monotone, the topology is a bit different: every user has a database (literally, it's an sqlite file), which is the repository. you can checkout from databases (which is a local operation, always), and you can push/pull/sync between databases (which is a remote operation).
> so a checkout from remote is always a two-step operation, first pull, then checkout. this is deliberate, as sort of a "firewall" between the checkout and remote data.

My experiences of sqlite have been less than good - I used it for some
of the source analysis work but it was so flaky I had to ditch it and
switch to MySQL. For that reason alone I'd be inclined to say 'no' to
monotone.

--
Alan Burlison
--
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



oxygene

Posts: 64
From:

Registered: 6/14/05
Re: Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 2:18 AM   in response to: alanbur

  Click to reply to this thread Reply

hmm.. never had issues with it, what exactly were your problems?
also, svc seems to be using it: /lib/svc/bin/sqlite


patrick mauritz

alanbur

Posts: 1,218
From:

Registered: 3/9/05
Re: Re: Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 11:00 AM   in response to: oxygene

  Click to reply to this thread Reply

Patrick Mauritz wrote:

> hmm.. never had issues with it, what exactly were your problems?
> also, svc seems to be using it: /lib/svc/bin/sqlite

Basically its grasp of SQL is tenuous at best, it's as buggy as hell,
the bugs take forever to get fixed, and if you want to do a query that's
remotely complex the chances are you will get the wrong results back.

If all you want is simple lookups on single tables, it will probably be
fine - but in that case you'd probably be better off using Berkley DB
anyway.

--
Alan Burlison
--
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



oxygene

Posts: 64
From:

Registered: 6/14/05
Re: Re: Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 2:32 PM   in response to: alanbur

  Click to reply to this thread Reply

monotone uses sqlite as its storage layer - the sql-subset statements are written for and tested on it, and bugs can be fixed in monotone's internal copy of sqlite.

I might agree to your doubts if sqlite were an (or the default) option besides other SQLdbs, but it isn't. while I don't think we can claim extensive testing of any subset of sqlite, issues with sqlite in monotone should appear pretty quickly because it's the sole option.

sure, sqlite has its share of issues every now and then, but so does berkeley db (it was famous for killing rpm's databases for a while) and any other db (or software package).
maybe you expected more from it (eg. more complete SQL adherence), maybe people expected too much from berkeley db where it failed - for the use cases where they're successfully employed, they tend to work fine though (otherwise they'd be dropped, or fixed - and monotone dropped lots of libraries because they didn't work). I think, monotone is such a use case for sqlite.


patrick mauritz

lianep

Posts: 276
From: US

Registered: 3/9/05
Re: Re: Re: Re: Distributed SCM requirements draft
Posted: Jan 7, 2006 11:22 AM   in response to: oxygene

  Click to reply to this thread Reply


Patrick Mauritz writes:
> hmm.. never had issues with it, what exactly were your problems?
> also, svc seems to be using it: /lib/svc/bin/sqlite

I won't try to speak to Alan's problems with sqlite, but we're using a
restricted and well-tested (by us) subset of functionality in sqlite
for SMF. Our use of sqlite doesn't constitute endorsement for general
purpose use, only endorsement of its suitability for the subset of
functionality that we require. For that subset, it works well for us.

liane
--
Liane Praza, Solaris Kernel Development
liane dot praza at sun dot com - http://blogs.sun.com/lianep

_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



garypen

Posts: 17
From: GB

Registered: 3/9/05
Re: Distributed SCM requirements draft
Posted: Jan 9, 2006 3:17 AM   in response to: Stephen Hahn

  Click to reply to this thread Reply

Wouldn't it be a better idea to focus on the content of the document before we start trying to apply the document to any evaluations? I think that was the original purpose of Stephen's posting.

Anyway, with that in mind, here's my set of comments.

Line 18 "believe" should be "believed".

C6 should, perhaps, be broken down into separate requirements. I think, for instance, that the last paragraph of this requirement is "Essential" and not "Conditional".

C11, should be "Essential" and not "Conditional", since I think that an SCM lacking these characteristics would be unacceptable.

In fact, wouldn't it be better to combine the last paragraph of C6 with C11 and merge them with E4?:

+++START+++

E4. Transactional Operation

The candidate SCM must provide transactional operations on its repository, with clearly defined semantics. Mechanisms for recovering from system failure must be provided, with preference given to systems which automate such recovery. Undoing the application of a specific changeset ("backout") must be easy. Renaming and deletion of repository sub-trees must be supported.

NB: A history-preserving copy operation, followed by a delete operation, may be considered
equivalent to a rename; equivalency, and the reasons for rename omission, are to be assessed
and documented by the evaluating engineer.

+++END+++

I really racked my brains trying to think of additional requirements that were absent and I'm pleased to say that I can't think of any. However, I'd like everyone reading this thread to work as hard as they can on this aspect of the document because it's really important that we fully understand all the SCM requirements before we proceed to evaluation. In particular, input from non Sun employees is greatly valued as their perspectives may help them identify absent requirements.

I'd like to see a couple of phrases clearly defined somewhere in the document. My candidate definitions are included for comment:

changeset - A set of identifiable changes applied between repositories with associated metadata.
SWAN - Sun Wide Area Network, the Sun internal network.

oxygene

Posts: 64
From:

Registered: 6/14/05
Re: Distributed SCM requirements draft
Posted: Jan 9, 2006 4:00 AM   in response to: garypen

  Click to reply to this thread Reply

> Wouldn't it be a better idea to focus on the content
> of the document before we start trying to apply the
> document to any evaluations? I think that was the
> original purpose of Stephen's posting.
it seemed like a good way to get people talking about tools, and their requirement again.

> C6 should, perhaps, be broken down into separate
> requirements.
totally agree - I felt that way while applying it to monotone, but didn't want to clutter the eval. I think it's telling that I had to answer multiple questions for that point..

> In fact, wouldn't it be better to combine the last
> paragraph of C6 with C11 and merge them with E4?:
that would combine things even more.. it might make sense to move them together, but these are different issues (transactional operation, error recovery, undo operators), so maybe make them E4, E4a, E4b (or better, E4, E5, ..)

having transactional operation doesn't garantee the presence of undo (see gnu arch, undoing a patch generates some problems, no matter how you do it - but it's transactional), or error recovery (subversion with berkeley db backend was nasty in that regard for a while)

> it's really important that we fully understand all
> the SCM requirements before we proceed to evaluation.
I doubt we'll understand them "all" before setting up test scenarios, preferably with different tools.. every weakness of a tool that gets in the way generates a new requirement... some might not apply to the other tools at all because of their different design, but that's an answer to a requirement, too.

> In particular, input from non Sun employees is
> greatly valued as their perspectives may help them
> identify absent requirements.
in general, I found everything I cared about, otherwise I had added more points to my evaluation.

> changeset - A set of identifiable changes applied
> between repositories with associated metadata.
that's where trouble starts with different SCM tools and terminology: they can be different things for different tools

for some, changesets are really snapshots with delta storage. for others, they are "patches" that can be applied in a certain order and only taken away in the reverse order, for others, each can be applied and removed at will.
that can also affect how well a tree state, a checkout that is defined by a given set of changesets, is defined.

similar for repository: some call them database, some archive, some repository. for some, a repository (ie. one of the aliases above) is the same as a checkout (as these carry everything), or a local entity separate to a checkout, or a remote entity. (or any combination of those)

because of issues like these introducing another set of definitions should be done with great care - so that a definition helps to figure out what's being talked about, but that it's still loose enough to not exclude a tool just because the requirements become overly rigid by accident.

nikm

Posts: 53
From:

Registered: 3/9/05
Re: Distributed SCM requirements draft
Posted: Feb 16, 2006 7:50 PM   in response to: garypen

  Click to reply to this thread Reply

As a user I would like to add the following features to the list of requirements:
1. Preview.
Each transaction should have a preview mode, which allows to see what will happen
during transaction, but without any changes in developer's and integration areas.
2. Atomic transaction.
Each transaction should be atomic, which means it should lock the necessary part of
the integration area. Ideally the lock should "disappear" if the transaction was interrupted
in any way (system reboot, kill -9, lost connection - whatever).
3. Undo
There should be an easy way to undo a "wrong" transaction. Ideally there should be a
way to undo all transactions, one by one, but at least the last one.
4. Filemerge
There should be a comfortable tool to do a 3-way merge (parent, child, ancestor).
Something like filemerge in TeamWare.

Bryan O'Sullivan
bos@serpentine.com
Re: Re: Distributed SCM requirements draft
Posted: Feb 16, 2006 9:52 PM   in response to: nikm

  Click to reply to this thread Reply

On Thu, 2006-02-16 at 19:50 -0800, Nikolay Molchanov wrote: > 1. Preview. > Each transaction should have a preview mode, which allows to see what will happen > during transaction, but without any changes in developer's and integration areas. What do you mean by a transaction here? Most tools have the equivalent of a "status" command already, which tells you everything you need to know about changes that you've made within your local working copy. This, together with a "diff" command, essentially acts as a preview of what a commit will contain. For the other major transactional operations, push and pull, Mercurial provides "incoming" (what would a "pull" bring in?) and "outgoing" (what would a "push" send out?) commands. > 2. Atomic transaction. > Each transaction should be atomic, which means it should lock the necessary part of > the integration area. All DSCMs that I know of lock a repository during a commit. > Ideally the lock should "disappear" if the transaction was interrupted > in any way (system reboot, kill -9, lost connection - whatever). This is next to impossible to do in the presence of NFS, which is an exceptionally common use case (nobody trusts POSIX locks to be turned on or work over NFS, so people use lock directories or symlinks instead, where the semantics of creation are well defined and usually work). The best you can really hope for there is "pid X on host Y has the repo locked". > 3. Undo > There should be an easy way to undo a "wrong" transaction. Ideally there should be a > way to undo all transactions, one by one, but at least the last one. Mercurial has an "undo" command that rolls back the last transaction. What this means is that if a "pull" brings in 4 changesets in a single transaction, an undo that immediately follows will make them all go away. You can make history prior to the last transaction disappear using the "clone -r" (built in) or "strip" (available as part of the mq extension) commands. The strip command actually saves a "bundle" of the changes that it removes from the repository, so if you decide you stripped the wrong changes, you can reapply them. > 4. Filemerge > There should be a comfortable tool to do a 3-way merge (parent, child, ancestor). > Something like filemerge in TeamWare. Most DSCMs punt to an external tool for this, and let you plug in whatever tool you personally prefer. It's been years since I've used Teamware, but I think that almost any of the modern free merge tools is likely to be quite a bit better than my admittedly fuzzy recollection of Teamware's filemerge tool. Some DSCMs do a better job at automated merges than others. Bazaar-NG uses an SCCS-like weave to provide history-sensitive automated merges. This merge machinery has been ported to run under Mercurial, too, but it's not yet available by default. I'd expect it to be a bit more work to port it to Monotone, but it shouldn't be hard in that case, either. There's also been quite a bit of quasi-theoretical work in the free DSCM community on automated history-sensitive merging. None of it has really seen practical implementation yet, but some of the approaches appear to show promise. _______________________________________________ tools-discuss mailing list tools-discuss at opensolaris dot org

Stephen Hahn
sch@eng.sun.com
Re: Re: Distributed SCM requirements draft
Posted: Feb 17, 2006 12:43 AM   in response to: nikm

  Click to reply to this thread Reply

* Nikolay Molchanov <Nikolay dot Molchanov at Sun dot COM> [2006-02-16 19:51]:

The requirements document is not, in general, going to change at this
point in the evaluation. Specific comments follow:

> As a user I would like to add the following features to the list of requirements:
> 1. Preview.
> Each transaction should have a preview mode, which allows to see what will happen
> during transaction, but without any changes in developer's and integration areas.

A preview mode, or dry run mode, or do nothing mode is not strictly
necessary on transactions. An implementation might instead choose to
have an accurate child status transaction. Because of this
equivalence, neither E3 nor C11 require a preview mode.

> 2. Atomic transaction.
> Each transaction should be atomic, which means it should lock the necessary part of
> the integration area. Ideally the lock should "disappear" if the transaction was interrupted
> in any way (system reboot, kill -9, lost connection - whatever).
> 3. Undo
> There should be an easy way to undo a "wrong" transaction. Ideally there should be a
> way to undo all transactions, one by one, but at least the last one.

These are specific implementation choices that satisfy C11.

> 4. Filemerge
> There should be a comfortable tool to do a 3-way merge (parent, child, ancestor).
> Something like filemerge in TeamWare.

All of the candidates can use meld, kdiff, and the many other
pick-your-toolkit 3-way diff merge tools. Some candidates go further
in automating merge resolution, but the requirements don't demand
automated merging.

If people would like clarifications of this kind added to the
requirements, then that is fine: I can make such edits.

- Stephen

--
Stephen Hahn, PhD Solaris Kernel Development, Sun Microsystems
stephen dot hahn at sun dot com http://blogs.sun.com/sch/
_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



sommerfe

Posts: 976
From: US

Registered: 3/9/05
Re: Re: Distributed SCM requirements draft
Posted: Feb 17, 2006 5:35 AM   in response to: Stephen Hahn

  Click to reply to this thread Reply

On Fri, 2006-02-17 at 00:43 -0800, Stephen Hahn wrote:
> > As a user I would like to add the following features to the list of requirements:
> > 1. Preview.
> > Each transaction should have a preview mode, which allows to see what will happen
> > during transaction, but without any changes in developer's and integration areas.
>
> A preview mode, or dry run mode, or do nothing mode is not strictly
> necessary on transactions. An implementation might instead choose to
> have an accurate child status transaction. Because of this
> equivalence, neither E3 nor C11 require a preview mode.

yep, though preview/dry run has an important usability advantage; when
you get to the point where you're ready to putback/commit/integrate, you
can do a dry run and check the output, then (using a shell with history
editing) delete the "-n" or "--dry-run" or whatever the option is out of
the previous command and run it for real.

- Bill



_______________________________________________
tools-discuss mailing list
tools-discuss at opensolaris dot org



James Blackwell
jblack@merconline.com
Re: Re: Distributed SCM requirements draft
Posted: Feb 17, 2006 12:01 PM   in response to: nikm

  Click to reply to this thread Reply

On Thu, Feb 16, 2006 at 07:50:38PM -0800, Nikolay Molchanov wrote: > As a user I would like to add the following features to the list of requirements: > 1. Preview. > Each transaction should have a preview mode, which allows to see what will happen > during transaction, but without any changes in developer's and integration areas. Yes. You need this sort of thing in centralized revision contol systems. In those systems, you can end up with a tree that has changes that don't live in any RCS. One bad pull with lots of conflicts, and you've lost your code. This problem doesn't really exist in the DRCS world. Users are much more inclined to keep their local changes in a local RCS branch. If an operation goes bad, then one just reverts the tree and still has their local changes: Centralized RCS | Decentralized RCS 1. make changes | 1. branch 2. pull | 2. change, commit 3. change, change, change | 3. merge 4. pull | 4. change&commit, change&commit, change&commit 5. BOOM* | 5. Merge & BOOM** * "Why couldn't I have done a preview before I had this mess?" ** In the DRCS world we would run some equiv to bzr revert and consider possible plans of attack. That said, it doesn't mean that one can't preview. The DRCS world typically supports people that like to do dry runs by giving the user the ability to easily copy the working tree and perform a dry run there. > 2. Atomic transaction. > Each transaction should be atomic, which means it should lock the necessary part of > the integration area. Ideally the lock should "disappear" if the transaction was > interrupted in any way (system reboot, kill -9, lost connection - whatever). Any DRCS on my radar supports atomic transactions. It kind of comes with the business. The locking business is a different story. Presume that I am A, you are B and we are both pushing to a filesystem on a different machine, C. Without a server involved, its difficult for B to tell whether A gave up the ghost while talking to C, or is just slow. There's no algorithmic away around it because the remote filesystems supported these days do not provide when it comes to locking. That said, a DRCS can dothings like guess that if a lock is old or is "yours" (with care!), that it it can be disregarded. > There should be an easy way to undo a "wrong" transaction. Ideally there should be a > way to undo all transactions, one by one, but at least the last one. Some decentralized revision control systems, including Bazaar-NG, support uncommit. If a DRCS allows uncommit, then it will allow as any uncommits as you want. Most decentralized revision control systems (again, including Bazaar-NG) will allow one to reverse merge old revisions as well. > 4. Filemerge > There should be a comfortable tool to do a 3-way merge (parent, child, ancestor). > Something like filemerge in TeamWare. Revision control systems these days (including bazaar-ng) tend to avoid advanced UIs and instead rely upon third party tools. This isn't because revision control systems think that real men use vi and real women use emacs (switch according to gender and editor preference). Its because graphical UIs cut back on portability. My personal favorite merge utility is meld. It has support for a variety of revision control systems and has a version floating around with bazaar-ng support. Regards, James -- My home page: James Blackwell Gnupg 06357400 F-print AAE4 8C76 58DA 5902 761D 247A 8A55 DA73 0635 7400 _______________________________________________ tools-discuss mailing list tools-discuss at opensolaris dot org




Terms of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.
Copyright © 1995-2005 Sun Microsystems, Inc.