History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: JRA-7886
Type: New Feature New Feature
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Mike Cannon-Brookes [Atlassian]
Votes: 1
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
JIRA

Fixes at different times across multiple versions / branches - best practice & custom field

Created: 07/Sep/05 09:35 PM   Updated: 10/Nov/05 04:25 AM
Component/s: Documentation, Custom Fields
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments: 1. Microsoft Word SDR_status_diagram.doc (74 kb)

Issue Links:
Reference
 

Participants: Ahmad Masrieh, Anton Mazkovoi [Atlassian], Benjamin Naftzger [Atlassian], Giles Davidson, Jeff Turner [Atlassian], Mike Cannon-Brookes [Atlassian] and Nick Menere [Atlassian]
Since last comment: 140 weeks, 3 days ago
Labels:


 Description  « Hide
Fixing one issue at different times can be very tricky. Almost every tracking system has problems with this level of detail, because you often want the single issue to remain a single issue (ie no cloning) but somehow to be fixed for different versions / branches at different times.

My suggestion to solve this effectively and simply is as follows:

  • a custom field which can be applied to different projects where you want this ability
  • an advanced searcher for the above field

The custom field would display checkboxes for each version in the fix versions field (ie derived data), with each checkbox indicating whether or not the issue had been fixed in that version.

The searcher would then allow you to query 3 things:

  • find issues which HAVE been fixed in versions x, y, z (ie have the checkbox checked and a fix version set for those versions)
  • find issues which HAVEN'T been fixed in versions x, y, z but are scheduled (ie checkbox is not checked but fix version is set)
  • find issues with ALL/ANY/NO unfixed versions (ie issues with all/any/no unchecked checkboxes)

Things to think about: how the custom field gets the values from the fix version field - most likely some sort of funky Javascript.



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Giles Davidson - 16/Sep/05 10:24 AM
IMHO - this is a workaround for a lack of function in the system.
If you want to implement CM processes then you need to be able to apply whatever workflow would apply post build to each build which includes the issue. Almost all issue trackers assume that the issue is effectively complete when the developer has finished with it although when testing has been done. But if, for example, a fix is included in a hotix and in a subsequent rollup release you need to record what happened in both builds, since the software with which the fix is built is different..
Secondly if you are using a CM process then the release itself is a controlled item and you have to be able to show its status and that of its components.

In our current system the issue effectively forks if it goes into more tnat one system and from then on the wrk flow is followed independantly for each build. This is particularly for 1st and third level support.


Anton Mazkovoi [Atlassian] - 18/Sep/05 09:56 PM
You are right - the custom field will not work for everybody.

> In our current system the issue effectively forks if it goes into more tnat one system and from then on the wrk flow is followed independantly for each build. This is particularly for 1st and third level support.
Using more than one issue is much better if the issue needs to be on different stages of the workflow for different releases. At the moment JIRA will not automatically create a new issue ('fork' and issue) for each version, and this must be done manually.


Giles Davidson - 29/Sep/05 11:19 AM
If we are working on different branches then we clone the issue, however a particular fix (i.e. the identical code) may be included in both a hot fix and a subsequent rollup, the status should be tracked independently if this case and should follow the full workflow. We don't actually create a new issue in our current system in this situation - it simply allows the post-build work flow to be followed for however many builds include the change (and it is can be simple to implement)

Jeff Turner [Atlassian] - 30/Sep/05 02:51 AM
How about creating sub-tasks on the fixed issue? Each sub-task can have its fix-for version set to the build including the change. You could even have a custom workflow on the 'Fix deployment' subtask type if necessary.

Jeff Turner [Atlassian] - 30/Sep/05 02:54 AM
More thoughts on fix deployment + subtasks at http://forums.atlassian.com/thread.jspa?messageID=250096788&#250223252

Giles Davidson - 30/Sep/05 10:18 AM
We have a target release which is the release a developer is shooting for - the actual rease/build might be different and needs to be recorded. But We probably need to sort out some terminology .

The release in which an is found is different to the target -release which may differ from the actual release.

How about:
Release - a line of developement.
Build - snapshot of the the release that is built, will be QAed and may be released.
Cut - an iteration of the build - critical errors may be fixed and the build redone - other less critical changes are not (neccessarily) included in a recut.

We don't bother to record that a fix was included in a recut, only that it went into a build.

An issue is not complete until it reaches a termination status. - for example tested_ok, duplicate, withdrawn, rejected etc. For us if an issue is tested OK then we known what build it is in, and by extension when it became available to a customer.

Prior to release of a new release to a customer we do a number of beta builds, b1, b2 etc. After GA release we treat each hotfix and patch release as a build.
The simplified workflow is

open->open for coding -> code complete -> built ->tested failed

however bad stuff happens so the fix is reopend, fixed again and the build recut:

open -> open for coding -> code complete -> built -> test failed (reopend for coding) -> code complete ->built -> tested ok

Note: Once an issue reaches code complete it cannot be changed by the developer unless it is reopened. 'built' implies ready for QA etc.

We currently record release and build so aggregation would not be a problem. To find all fixes in a release - search by release. To find all fixes in cluded in hotfixes based on, say, v5.2.1 (v5.2.1.1/2/3....), search by builds i.e V5.2.1*.
Actually hotfixes create a problem because they may be on the release main-line or because of there is already code for the next patch release affecting the modules concerned the code may need to be branched. Usually a hot fix will be included in the nex patch release. In either case the code is build in a different context if it is in a hotfix or a patch, so the work flow post build needs to be followed for both the hotfix and the patch.

You have suggested that we use sub-issues for this - very definitiely a workaround and I suspect rather cumbersome. In my current system we have a table with issue, release, build and status columns this is joined with the issue table and as builds are added the issue effectively forks. Very simple.

The link in the previous comment did not work!


Nick Menere [Atlassian] - 03/Oct/05 08:48 PM
Giles,

Please try this link:
http://forums.atlassian.com/thread.jspa?messageID=250096788
It is quite a detailed discussion and deals with situations simliar to yours.

I believe sub-tasks would be the best answer for your needs, and you can maybe simply your process by having these sub-tasks autmatically created in post-functions that create sub-tasks based ion your fix-for field.

Let us know if you have more questions or suggestions after reading the above forum.

Cheers,
Nick


Giles Davidson - 04/Oct/05 10:58 AM
I've looked at this thread - handling issues in different releases branches (i.e. on different lines of development) is not a problem, either cloning or sub-issues could be used quite successfully. - we actually clone issues in our current system because the developers' consensus was that it would be easier to handle this way, although our system would handle mutlple releases under one issue.

My concerns lie in the situation where code on the same release goes into more than one build - it can end up in more than one hotfix because if a number of hotfixes affact the same code we try to roll them up., so for example it hotfix 1 and hotfix 3 both affect libcon.so, hotfix 3 will include hotfix1, and we will obselete hotfix 1. If both of these changes are on the mainline the will at some point be included in a patch release.
Another situation that occurs is the a fix has already been coded and is ready for inclusion in a patch release, and then a customer at the previous patch level finds that he needs that fix. Because of the release schedule for patches it may be determined that he can't wait for the patch and the fix will be issued at the previous patch level as a hotfix.
In either of these cases the code is the same but we still need to be able to follow the work flow for each hotfix and the subsequent patch release, logically these are not sub-issues.

We record both release and build, and both are neccessary. The build the developer won't know when he has finished with the fix. We populate it at build time from the build. using the script, so the generation of subtasks is going to be triggered at build time. A build represent a version of the system that is test and (maybe released). But we want to know that an issue was fixed in a particular build, The testers know what they are going to have to test, and the support guys know that a particular release or hotfix will solve a customers problem.

To me 'fix-for' sounds like a target release, but do you have a field to record the actual release. It may be useful to know that a fix planned for 3.04 was not included, but later made it into 3.0.5, only having the fix-for risks losing info.

In the thread it was implied that subissues cannot have subissues, if that is the case, then we wouldn't be able to use sub-issues if it turned out that subissues were the best way to handle different releases codelines rather than cloning. What kind of interatction would there be if we had say, documentation, handled as a subissue if subissues where also used for build tracking.


Benjamin Naftzger [Atlassian] - 23/Oct/05 09:02 PM
Workflow example from a customer....

The heavy line is the ideal workflow.
The boxes are states
The lines indicate valid state transition and the arrow head indicates the direction of flow.
The names alongside the the lines indicate that roles that can make the transition.

So you can see that from build onwards there is quite a bit of of workflow after build. The issue is able to follow that workflow for each build independantly.


Ahmad Masrieh - 10/Nov/05 04:25 AM
Great idea to submit a best practice suggestion , especially to the build hot topic issue within JIRA - thanks to Mike.

This issue could be the first linked to JRA-3845.

What about adding a Component best practice to be able to find best practices (or tag existing) - or do you prefer to add a section to http://confluence.atlassian.com/display/JIRA/Home ?