Re: [fossil-users] Ticket system -- blockers

2013-10-07 Thread Richard Hipp
On Sun, Oct 6, 2013 at 9:55 PM, Joseph R. Justice jayare...@gmail.comwrote:

 During the push, it is noticed that R(N) says bug B2 is closed while R'
 says it is open and blocked by B1 (and that A specified the block), which
 is open both in R' and R(N).  N should be notified of this as it is
 something which cannot be automatically resolved by fossil, and given an
 opportunity to specify what to do.


This would be a fundamental change to the design and philosophy of Fossil.

You are asking that push operations become atomic (either all artifacts are
pushed or else none are) and that the push can only succeed if certain
constraints are satisfied.  As currently designed, Fossil does push
operations incrementally.  And a push never fails due to constraints.

The current model is that a repository is an unordered bag of blobs
(called artifacts).  A push from A to B merely causes all artifacts held by
A to be copied into B if they are not already there.  The push logic does
not know or care about the content of the individual artifacts.  There are
no constraints that prevent certain artifacts from being pushed from A to B
based on content.  If A has push permission, then A can push any artifact
it wants, whenever it wants, and it can push multiple artifacts in any
order that it wants.  The push and pull logic never examines the content of
an artifact.

Push and pull are just transport.  Like TCP/IP, that merely moves
information from one place to another without regard to the meaning of
that information, push and pull just move artifacts from one repository to
another with the objective that both repositories end up holding all
artifacts.

Now, you could in theory change the philosophy of Fossil so that push and
pull did examine the content of artifacts as they moved over the wire, and
rejected artifacts that violated constraints.  But to do so would seriously
complicate matters, both for the implementation and for the user.  Suppose
you had a case where repositories A and B held incompatible artifacts,
artifacts that caused constraint violations.  A could not push to B without
violating a constraint so the push would fail.  But if pushing from A to B
violated a constraint, so would pulling from B back to A.  The user of A is
therefore stuck.  He cannot pull without resolving the constraint.  He
cannot resolve the constraint without knowing what the constraint is.  And
he cannot find out what the constraint is without doing a pull.  Stalemate.

So maybe you add some logic to deal with this first-level constraint
violation and prevent stalemate.  I think you would quickly run into
lower-level and more subtle kinds of stalemates, though.  I fear that such
a design would quickly devolve into playing whack-a-mole with constraints.




 How is this different from synching other things, such as code etc, where
 multiple people might make incompatible changes to the same object which
 require human intervention to resolve?


Push and pull never create conflicts.  Conflicts only occur during a merge
operation, which is something that only occurs in a local checkout.  A push
or a pull might create a new branch or fork in the code, but it never
creates a conflict.

-- 
D. Richard Hipp
d...@sqlite.org
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-07 Thread Matt Welland
Applying constraints as receiver end filtering could be very useful and I
think it could fit the sync model if not needed blobs were not necessarily
dropped but a record was kept so that they wouldn't be sync'd and they are
kept out of the list of blobs. Essentially something similar to what the
shun mechanism does now.

I think features like the ticket blocking and pulling only a specific
branch could be implemented on top of such a mechanism with the caveat that
all data was being sync'd at least once. I.e. this would add control and
management power to fossil but it would not be a bandwidth saving mechanism.

Consider an autoshun mechanism that for example suppresses blobs based on
branch name. To make it work this blob suppression mechanism would not
remove blobs on rebuild.

Could this work?


On Mon, Oct 7, 2013 at 12:43 AM, Richard Hipp d...@sqlite.org wrote:

 On Sun, Oct 6, 2013 at 9:55 PM, Joseph R. Justice jayare...@gmail.comwrote:

 During the push, it is noticed that R(N) says bug B2 is closed while R'
 says it is open and blocked by B1 (and that A specified the block), which
 is open both in R' and R(N).  N should be notified of this as it is
 something which cannot be automatically resolved by fossil, and given an
 opportunity to specify what to do.


 This would be a fundamental change to the design and philosophy of Fossil.

 You are asking that push operations become atomic (either all artifacts
 are pushed or else none are) and that the push can only succeed if certain
 constraints are satisfied.  As currently designed, Fossil does push
 operations incrementally.  And a push never fails due to constraints.

 The current model is that a repository is an unordered bag of blobs
 (called artifacts).  A push from A to B merely causes all artifacts held by
 A to be copied into B if they are not already there.  The push logic does
 not know or care about the content of the individual artifacts.  There are
 no constraints that prevent certain artifacts from being pushed from A to B
 based on content.  If A has push permission, then A can push any artifact
 it wants, whenever it wants, and it can push multiple artifacts in any
 order that it wants.  The push and pull logic never examines the content of
 an artifact.

 Push and pull are just transport.  Like TCP/IP, that merely moves
 information from one place to another without regard to the meaning of
 that information, push and pull just move artifacts from one repository to
 another with the objective that both repositories end up holding all
 artifacts.

 Now, you could in theory change the philosophy of Fossil so that push and
 pull did examine the content of artifacts as they moved over the wire, and
 rejected artifacts that violated constraints.  But to do so would seriously
 complicate matters, both for the implementation and for the user.  Suppose
 you had a case where repositories A and B held incompatible artifacts,
 artifacts that caused constraint violations.  A could not push to B without
 violating a constraint so the push would fail.  But if pushing from A to B
 violated a constraint, so would pulling from B back to A.  The user of A is
 therefore stuck.  He cannot pull without resolving the constraint.  He
 cannot resolve the constraint without knowing what the constraint is.  And
 he cannot find out what the constraint is without doing a pull.  Stalemate.

 So maybe you add some logic to deal with this first-level constraint
 violation and prevent stalemate.  I think you would quickly run into
 lower-level and more subtle kinds of stalemates, though.  I fear that such
 a design would quickly devolve into playing whack-a-mole with constraints.




 How is this different from synching other things, such as code etc, where
 multiple people might make incompatible changes to the same object which
 require human intervention to resolve?


 Push and pull never create conflicts.  Conflicts only occur during a merge
 operation, which is something that only occurs in a local checkout.  A push
 or a pull might create a new branch or fork in the code, but it never
 creates a conflict.

 --
 D. Richard Hipp
 d...@sqlite.org

 ___
 fossil-users mailing list
 fossil-users@lists.fossil-scm.org
 http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users




-- 
Matt
-=-
90% of the nations wealth is held by 2% of the people. Bummer to be in the
majority...
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-07 Thread Ron Wilson
On Mon, Oct 7, 2013 at 11:31 AM, Matt Welland estifo...@gmail.com wrote:


 Applying constraints as receiver end filtering could be very useful and I
 think it could fit the sync model if not needed blobs were not necessarily
 dropped but a record was kept so that they wouldn't be sync'd and they are
 kept out of the list of blobs. Essentially something similar to what the
 shun mechanism does now.


In theory, such ticket filtering could be done, but I don't know if there
is an easy to find the artifacts making up a specific ticket. From what I
have read, the ticket table holds the most recent field values and their
respective timestamps so processing artifacts is only done when new ones
arrive or a rebuild is done. Unless the ticket table also has a field for a
list of the artifacts for each ticket, finding the artifacts required to
detect restricted sequences of field value changes would be a very
intensive operation.

But, even if such checking could be added, there could still be pending
ticket changes from an offline contributor. So far, the distributed
ticketing system I know of is Fossil. It's distributed nature is going to
introduce problems you won't see in a system that requires a connection to
a central repository for operation.

In an office situation where your team always has access to the main
repository and you have auto-sync enabled, then Fossil will effectively
work like a non-distributed system. But the main advantage of a distributed
system like Fossil is to enable (mostly) normal operation in situations
where one or more team members needs to get work done without constant
access to the main repository. This could arise from having a
geographically dispersed team or from the need to send someone to, for
example, an outside testing facility.

Where I work, our process is that we don't close or resolve tickets until
the actions to date have been reviewed - and their affect on related
tickets. That way, everyone knows before the ticket gets resolved or closed.

(In theory, push/pull could be done via email. For small changes, this
could be practical. Once libfossil is far enough along, maybe I will look
into implementing an app to do that, at least for ticket updates. But even
then, there will be significant lag in updates.)
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-02 Thread Stephan Beal
On Wed, Oct 2, 2013 at 3:51 PM, Jacek Cała jacek.c...@gmail.com wrote:

 ...For those interested I report changes to the ticket table (below) and
 view and edit pages (attached source). A remaining issue is that as
 there're no hard db constraints on blockers there seems to be no way to
 verify that the blocker to be added is actually a valid ticket uuid.
 Basically, user can add any text as a blocker.


Any real blocking support has to be integrated with the system as a
whole, from the human processes to the software (but primarily the human
processes). What does a block actually block? Does it block a release
(fossil doesn't know what a release is), does it cause work to be
reprioritized (also something fossil knows nothing about), or does it have
some other effect? My point being only that i don't think there's anything
Fossil can reasonably know/do in regards to a blocker except for what
you've already done:


 CREATE TABLE ticket(
 ...
   comment TEXT,
   blockers TEXT
 );


IMO that doesn't really belong in the default ticket schema system
because... (and i know this is going to sound somewhat lame!)... it's never
been a pressing issue before (in 6 years of use). It may have been brought
up a time or two (i don't recall, but i also don't immediately recall
whether or not i've already eaten today :/). If it's added, i'm pretty sure
it will be ignored by 99% of users, in which case leaving it as an optional
client-side customization seem more practical to me.

But of course that's just my personal opinion and not some sort of official
statement :).

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-02 Thread Jacek Cała

 in the field (possibly without commas, or a mixture). Ignoring the
 complication of having to parse/grok the content (it's a minor
 complication, granted, but parsing text is always at least a slight
 annoyance), there's another problem: DVCS. i edit the field, then you close
 the ticket in your copy before i sync my changes to the blocker list. So
 we've now got a closed ticket with open blockers. i don't see how that
 could be made to work (meaning automatically enforced) 100% reliably in a
 DVCS.


Fair enough, it's just that having indicators that something is blocking my
ticket may still be useful -- at least to me. Clearly, I'd sync my repo
before trying to resolve any blockers but at least I know they exist.

  Cheers,
  Jacek
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-02 Thread Krister Johnson
Jacek,

I just started using fossil. It is heartening to see there are so many
people contributing.

I haven't run into that need yet, but it doesn't mean i won't. Thanks for
putting this out there. I will know where to find it if that need arises.

Krister


On Wed, Oct 2, 2013 at 9:31 AM, Jacek Cała jacek.c...@gmail.com wrote:

  in the field (possibly without commas, or a mixture). Ignoring the
 complication of having to parse/grok the content (it's a minor
 complication, granted, but parsing text is always at least a slight
 annoyance), there's another problem: DVCS. i edit the field, then you close
 the ticket in your copy before i sync my changes to the blocker list. So
 we've now got a closed ticket with open blockers. i don't see how that
 could be made to work (meaning automatically enforced) 100% reliably in a
 DVCS.


 Fair enough, it's just that having indicators that something is blocking
 my ticket may still be useful -- at least to me. Clearly, I'd sync my repo
 before trying to resolve any blockers but at least I know they exist.

   Cheers,
   Jacek

 ___
 fossil-users mailing list
 fossil-users@lists.fossil-scm.org
 http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-02 Thread Ron Wilson
On Wed, Oct 2, 2013 at 10:31 AM, Jacek Cała jacek.c...@gmail.com wrote:

 in the field (possibly without commas, or a mixture). Ignoring the
 complication of having to parse/grok the content (it's a minor
 complication, granted, but parsing text is always at least a slight
 annoyance), there's another problem: DVCS. i edit the field, then you close
 the ticket in your copy before i sync my changes to the blocker list. So
 we've now got a closed ticket with open blockers. i don't see how that
 could be made to work (meaning automatically enforced) 100% reliably in a
 DVCS.


 Fair enough, it's just that having indicators that something is blocking
 my ticket may still be useful -- at least to me. Clearly, I'd sync my repo
 before trying to resolve any blockers but at least I know they exist


Having a list of any related tickets is useful. Your implementation is
impressive and good. My own was just an extra field with a text area in the
ticket edit page - though I did actually render links on the ticket view
page. I might use a simplified version of yours.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Ticket system -- blockers

2013-10-02 Thread Ron Wilson
On Wed, Oct 2, 2013 at 10:47 AM, Stephan Beal sgb...@googlemail.com wrote:


 Most just don't generate as much noise as i do, so you haven't seen them
 yet in your short time here ;).


Noise? I'd say you have a very high signal-to-noise ratio.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users