Hi guys
We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) What are the questions that you ask yourselves when you are/want to merge some code in your project? We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. Here are some typical questions we asked ourselves. - What other changes did this change require? - Can I integrate this change right now? - How large it is? - Who made it? - Is it still valid (when I'm working on an old change)? - Is this change impacted by a change that happened in another branch of my software? Stef D., Andy K. and Veronica U. _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
On Wednesday, November 23, 2011 at 10:57 AM, Stéphane Ducasse wrote:
Number 1 question I always ask but is sort of implicit in the other questions is, why was this change made? which impacts on, is it still valid and is this change impacted by a change that happened in another brach of software. _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
On 23/11/2011 12:57, Stéphane Ducasse wrote:
At my job we have several programming rules hat we check on pieces of code before integrating.Hi guys We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) What are the questions that you ask yourselves when you are/want to merge some code in your project? We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. Some of these checks could be automated, some cannot. Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits. I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants). I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes. Regards -- carlos e. ferro
| senior developer| caesar
systems | see
clearly. decide smarter. [hidden email] | t: +1.281.598.8790
| t: +54.11.4389.0126 | blog.caesarsystems.com
| www.caesarsystems.com _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
I find the question How Large is it interesting because it can be easily enhanced to complexity metrics. Two simple ones are #loc and #sends (you don't need to compile a method to count the number of message sends it contains). If the change represents a Class definition you could measure the number of instance variables. Changes that remove classes or methods would subtract their complexity from the total. There are more metrics easy to calculate. The point is that with these considerations you could ask how much complexity the change set adds to/removes from the system.
leandro caniglia ph.d. | chief technologist | caesar systems | see clearly. decide smarter. [hidden email] | t: +1.281.598.8810 +1.281.617.2972 +54.11.4389.0126 | petrovr.blogspot.com | www.caesarsystems.com This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message. On Wed, Nov 23, 2011 at 12:57 PM, Stéphane Ducasse <[hidden email]> wrote: Hi guys _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Carlos E. Ferro
>>
> At my job we have several programming rules hat we check on pieces of code before integrating. > Some of these checks could be automated, like what? I integrated daily changes and I have a lot of simple questions. I'm quite sure that people would be interested by the answers to these questions. But for the moment I will not tell them but I want to know what you guys are asking yourselves. > some cannot. > > Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits. > I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants). > > I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes. > > Regards > -- > carlos e. ferro | senior developer| caesar systems | see clearly. decide smarter. > > [hidden email] | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com > > This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message. > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
What does this relate to
in the bug-tracking system?
Did the tests pass before? Do the tests pass now? Which parts of this are real changes and which are just because somebody felt it was important to reformat everything? :-) What were those changes I just accepted/deleted because the cat was stepping on my keyboard?
_______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Carlos E. Ferro
Thanks alan!
We want more. Please log them next time you integrate something. I really a bunch of them. But I want to hear you guys! Stef > On 23/11/2011 12:57, Stéphane Ducasse wrote: >> Hi guys >> >> We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) >> What are the questions that you ask yourselves when you are/want to merge some code in your project? >> We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. >> > At my job we have several programming rules hat we check on pieces of code before integrating. > Some of these checks could be automated, some cannot. > > Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits. > I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants). > > I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes. > > Regards > -- > carlos e. ferro | senior developer| caesar systems | see clearly. decide smarter. > > [hidden email] | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com > > This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message. > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
"Alan Knight"<[hidden email]> wrote:
> Which parts of this are real changes and which are just because somebody > felt it was important to reformat everything? :-) Reformatting is relatively easy, but it would be really nice if the tooling could identify (at least some) refactoring too. Best I've seen so far is barely identifying simple method renames, I'm fairly confident we could do better than that. On top of that most tools make it difficult to compare bits of code that don't reside in the exact same method. The fact of life is that code moves around as responsibilities get reallocated. A good merge tool should let me compare arbitrary bits of changes with ease. As it is the "art of merging" is primarily being able to pick out slightest differences by simply eyeballing chunks of code yourself. It seems that merge tools assume that the person merging is the one who wrote the change, that is often not the case. It's great that the obvious stuff can be merged automatically nowadays, but any non-trivial merge case requires actual understanding of the change. _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by stephane ducasse-2
On 23/11/2011 18:30, stephane ducasse wrote:
I will mention a couple, but they are just OUR programming rules, not intended to be universal... Most people would disagree with any of them.At my job we have several programming rules hat we check on pieces of code before integrating. Some of these checks could be automated,like what? We consider alarming if variable names (instance or local) have more than 2 words. Selectors with many keywords (more than 2) are also suspects. We don't allow complex arguments for messages. No parenthesis. example: test := aVariable between: (self calculateMin: arg) and: (self calculateMax: arg). should be: min := self calculateMin: arg. max := self calculateMax: arg. test := aVariable between: min and: max. Code duplication and hard-coded constants must be avoided. and so on... I am not sure if it is interesting to know which particular rules we would like to check, but to think that there should be a place where I could define rules to check. Best regards --
carlos e. ferro
| senior developer| caesar
systems | see
clearly. decide smarter. [hidden email] | t: +1.281.598.8790
| t: +54.11.4389.0126 | blog.caesarsystems.com
| www.caesarsystems.com _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by mkobetic-2
If the tool only compares the new proposed version of a method with the current one, then you might miss something because sometimes the new version should be compared against a method with another selector. This is clearly the case when the change renames a selector. It also happens when the change extracts some lines from the body of a larger method. So, to put this in a question (as Stef is requesting) I would add the following:
What's the method (or method fragment) that this new method modifies? leandro caniglia ph.d. | chief technologist | caesar systems | see clearly. decide smarter. [hidden email] | t: +1.281.598.8810 +1.281.617.2972 +54.11.4389.0126 | petrovr.blogspot.com | www.caesarsystems.com This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message. On Wed, Nov 23, 2011 at 7:24 PM, <[hidden email]> wrote:
_______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by stephane ducasse-2
On 23.11.11 22:30, stephane ducasse wrote: >>> >> At my job we have several programming rules hat we check on pieces of code before integrating. >> Some of these checks could be automated, > > like what? > > I integrated daily changes and I have a lot of simple questions. I'm quite sure that people would be interested by the answers > to these questions. But for the moment I will not tell them but I want to know what you guys are asking yourselves. I've always considered it important to have a set of code quality tests which would run before code was checked in and accepted into a common baseline. Tests that were more than SUnit or functional acceptance tests, but which then took a bit longer to run. I'd like to have these tests automated and run when merging. SmallLint provides a number of these, and there are surely some other quality and metric tools around. This may go a bit far, but since merging is part of a build process, I'd also like to see whatever you do fit into a CRISP build: *Complete, i.e. scorched-earth build *Repeatable, i.e. consistent and reproducable *Informative *Schedulable *Portable FWIW -- Joseph Pelrine [ | ] MetaProg GmbH Email: [hidden email] Web: http://www.metaprog.com As soon as you introduce people, things become complex. _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
Hi,
in a previous company I worked we had something very similar to what Carlos described. We used SmallLint to verify that no errors where in the code (we extended SmallLint to be able to document false positives), we had what we called programming rules that were run as SUnit tests before integration and after integration, and we also had something we called architecture tests.
The programming rules included simple rules like checking the numbers of parameters, doing spell checking, that the initialize message is not send for other object but the class, etc. up to complex validations for patterns like the visitor, state, etc.
The architecture rules were oriented towards dependencies between modules (applications in Envy), dependencies between systems, etc. We had a process that defined when to run each type of test (tests were categorized like functional, programming rules, architecture rules, etc using different suites). For example if you changed something, first you had to run the tests related to the changed module, then the functional tests of all the system (around 23.000 test, ran in 7 minutes) then the programming rules. After that the change was sent to the integrator who used an automatic integration tool and also the architecture tests where runned. Before closing the new release the version was uploaded to a fresh GemStone image, and all the functional tests where ran in GemStone. If everything ran correctly, the new version was released. The last steps (uploading code to gemstone, running the tests, etc) are currently done automatically in a build server using Jenkins.
This process allowed us to be very confident in the code we produced. Of course that it took some time to do the whole integration cycle, that is why sometimes when the release was an internal one, we could avoid running the tests in gemstone, etc.
Anyway, it feels really good to have a process like that and it is still in use. The programmers add new rules when they find mistakes they do, sometimes to prevent errors in the evolution of the code (that is very nice too... design decisions are made explicit through these tests), etc. So, at the same time is a very "reflective" process...
Bye, Hernan. On Thu, Nov 24, 2011 at 5:49 AM, Joseph Pelrine <[hidden email]> wrote:
Hernán Wilkinson
Agile Software Development, Teaching & Coaching Mobile: +54 - 911 - 4470 - 7207 email: [hidden email] site: http://www.10Pines.com Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
Hi,
> What are the questions that you ask yourselves when you are/want to merge some code in your project? 1. Are there any changes conflicting with my own? 2. If there are no direct conflicts (i.e. a merge worked), will the "baseline" changes combined with my own conflict? (i.e. are there implicit conflicts?) 3. Do all the tests pass after the merge? 4. How quickly can I get my changes published before someone else publishes and I have to merge again :-) To track / understand other people's changes, mostly for the purpose of resolving conflicts, I need information on the version that I'm merging with including all the versions in between. So, something like a summary of all the version comments (collected) and a summary of all the changes (that I can drill into if I need to). I suppose the kind of questions depend a lot on the way we work? My 2 cents Otto _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
- When the version to be merged into the trunk is on a branch which I
already did merge a couple of versions earlier I want to have to see/think about only those changes that are new (i.e. the changes between the version last merged and the current version to be merged and not all changes between the current version to be merged and the trunk version to be merged into) e.g. 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 6.0 -> 7.0 Trunk \ / / ?? questions asked here \ / / -> 2.1 -> 2.2 -> 2.3 -> 2.4 Branch The branch version 2.2 has already been merged into trunk version 5.0 some time earlier. Therefore I'd like to merge only the changes between 2.2 and 2.4 into 7.0. I don't know what Pharo does but VisualWorksdisplays all changes between 2.4 and 7.0 while giving additional information about the last common version which is determined to be 2.0 because previous merges are not considered. This forces me to think about how to merge all changes up to version 2.2 once again. We fixed that in our tools, of course (in VW 7.6), offering an additional merge option which only merges the changes since a user selected common version. Regards Thorsten Am 23.11.2011 um 16:57 schrieb Stéphane Ducasse: > Hi guys > > We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) > What are the questions that you ask yourselves when you are/want to merge some code in your project? > We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. > > Here are some typical questions we asked ourselves. > - What other changes did this change require? > - Can I integrate this change right now? > - How large it is? > - Who made it? > - Is it still valid (when I'm working on an old change)? > - Is this change impacted by a change that happened in another branch of my software? > > Stef D., Andy K. and Veronica U. > > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
tx :)
On Nov 24, 2011, at 1:38 PM, [hidden email] wrote: > - When the version to be merged into the trunk is on a branch which I > already did merge a couple of versions earlier I want to have to see/think > about only those changes that are new (i.e. the changes between the version > last merged and the current version to be merged and not all changes > between the current version to be merged and the trunk version to be merged > into) > > e.g. > > 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 6.0 -> 7.0 Trunk > \ / / ?? questions asked here > \ / / > -> 2.1 -> 2.2 -> 2.3 -> 2.4 Branch > > The branch version 2.2 has already been merged into trunk version 5.0 some > time earlier. > Therefore I'd like to merge only the changes between 2.2 and 2.4 into 7.0. > I don't know what Pharo does but VisualWorksdisplays all changes between > 2.4 and 7.0 while giving additional information about the last common > version which is determined to be 2.0 because previous merges are not > considered. > This forces me to think about how to merge all changes up to version 2.2 > once again. > We fixed that in our tools, of course (in VW 7.6), offering an additional > merge option which only merges the changes since a user selected common > version. > > Regards > Thorsten > > > Thorsten Seitz > Development Center Architekturkonzeption und -entwicklung (T.SVD 32) > > DB Systel GmbH > Raum 5C.136, Alfred-Herrhausen-Allee 1, 65760 Eschborn > Tel. 069 265-48245, intern 955- > _________________________________________________________________________________ > > Der DB-Konzern im Internet >> http://www.deutschebahn.com > > Sitz der Gesellschaft: Frankfurt am Main > Registergericht: Frankfurt am Main, HRB 78707 > USt-IdNr.: DE252204770 > Geschäftsführer: Detlef Exner (Vorsitzender), Dr. Burkhard Klanke, Dr. > Klaus Rüffler > Vorsitzender des Aufsichtsrates: Dr. Rolf Kranüchel > > > |------------> > | Von: | > |------------> >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |Stéphane Ducasse <[hidden email]> | >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |------------> > | An: | > |------------> >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |ESUG Members <[hidden email]> | >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |------------> > | Datum: | > |------------> >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |23.11.2011 16:58 | >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |------------> > | Betreff: | > |------------> >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |[Esug-list] Call for your input on questions you ask yourselves during merge | >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |------------> > | Gesendet | > | von: | > |------------> >> --------------------------------------------------------------------------------------------------------------------------------------------------| > |[hidden email] | >> --------------------------------------------------------------------------------------------------------------------------------------------------| > > > > > > Hi guys > > We are writing some articles on the work of veronica to support merging > activities. We need your input great smalltalk community :) > What are the questions that you ask yourselves when you are/want to merge > some code in your project? > We would like to do a compilation of questions and also evaluate how the > solution of veronica solves them or part of them. > > Here are some typical questions we asked ourselves. > - What other changes did this change require? > - Can I integrate this change right now? > - How large it is? > - Who made it? > - Is it still valid (when I'm working on an old change)? > - Is this change impacted by a change that happened in another > branch of my software? > > Stef D., Andy K. and Veronica U. > > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > > > _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
Hello,
Already many thanks for all the input we received. As a way to stimulate the discussion a bit, you can find my list of questions below. * Who made the changes? * How big are the changes? Are they local or do they touch a lot of stuff? * Was this method changed a lot of times in the past? Why did it change? (I noticed in my projects stuff that keeps on changing most of the times indicates that something is not really right in the design) * Is this change part of a whole series of changes? (when someone is working on a feature and commits intermittently, I sometimes prefer to wait loading their changes until I know they are done) * Why were the changes made? Bugfix? New feature? Refactoring? Cleanup? * Who wrote the original code that was changed? Was any of my old code changed? * Is the commit coherent? Do all the changes within the commit belong together or are they unrelated? (This also happens often I think: someone fixes a bug and decides to also rename a method or clean something up … very annoying to find out what really happened) * Is this change impacted/influenced by a change that happened in another branch of my software? * Did this change ever happen before? * Is this change reverting the code to an old state? (someone changes some code to actually roll back something; would like to know this since it might be by accident) * Did the person who made the change also update the tests? Was this necessary? * If I just load the change, what are the changes that it breaks my current system? * When multiple packages were committed at the same time: do I really need to load all of them now, or can I just load/merge with the version of the package I'm working on? Kind regards, Andy On 26 Nov 2011, at 08:56, Stéphane Ducasse wrote: > tx :) > > On Nov 24, 2011, at 1:38 PM, [hidden email] wrote: > >> - When the version to be merged into the trunk is on a branch which I >> already did merge a couple of versions earlier I want to have to see/think >> about only those changes that are new (i.e. the changes between the version >> last merged and the current version to be merged and not all changes >> between the current version to be merged and the trunk version to be merged >> into) >> >> e.g. >> >> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 6.0 -> 7.0 Trunk >> \ / / ?? questions asked here >> \ / / >> -> 2.1 -> 2.2 -> 2.3 -> 2.4 Branch >> >> The branch version 2.2 has already been merged into trunk version 5.0 some >> time earlier. >> Therefore I'd like to merge only the changes between 2.2 and 2.4 into 7.0. >> I don't know what Pharo does but VisualWorksdisplays all changes between >> 2.4 and 7.0 while giving additional information about the last common >> version which is determined to be 2.0 because previous merges are not >> considered. >> This forces me to think about how to merge all changes up to version 2.2 >> once again. >> We fixed that in our tools, of course (in VW 7.6), offering an additional >> merge option which only merges the changes since a user selected common >> version. >> >> Regards >> Thorsten >> >> >> Thorsten Seitz >> Development Center Architekturkonzeption und -entwicklung (T.SVD 32) >> >> DB Systel GmbH >> Raum 5C.136, Alfred-Herrhausen-Allee 1, 65760 Eschborn >> Tel. 069 265-48245, intern 955- >> _________________________________________________________________________________ >> >> Der DB-Konzern im Internet >> http://www.deutschebahn.com >> >> Sitz der Gesellschaft: Frankfurt am Main >> Registergericht: Frankfurt am Main, HRB 78707 >> USt-IdNr.: DE252204770 >> Geschäftsführer: Detlef Exner (Vorsitzender), Dr. Burkhard Klanke, Dr. >> Klaus Rüffler >> Vorsitzender des Aufsichtsrates: Dr. Rolf Kranüchel >> >> >> |------------> >> | Von: | >> |------------> >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |Stéphane Ducasse <[hidden email]> | >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |------------> >> | An: | >> |------------> >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |ESUG Members <[hidden email]> | >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |------------> >> | Datum: | >> |------------> >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |23.11.2011 16:58 | >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |------------> >> | Betreff: | >> |------------> >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |[Esug-list] Call for your input on questions you ask yourselves during merge | >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |------------> >> | Gesendet | >> | von: | >> |------------> >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> |[hidden email] | >>> --------------------------------------------------------------------------------------------------------------------------------------------------| >> >> >> >> >> >> Hi guys >> >> We are writing some articles on the work of veronica to support merging >> activities. We need your input great smalltalk community :) >> What are the questions that you ask yourselves when you are/want to merge >> some code in your project? >> We would like to do a compilation of questions and also evaluate how the >> solution of veronica solves them or part of them. >> >> Here are some typical questions we asked ourselves. >> - What other changes did this change require? >> - Can I integrate this change right now? >> - How large it is? >> - Who made it? >> - Is it still valid (when I'm working on an old change)? >> - Is this change impacted by a change that happened in another >> branch of my software? >> >> Stef D., Andy K. and Veronica U. >> >> >> _______________________________________________ >> Esug-list mailing list >> [hidden email] >> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >> >> >> > > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
I suspect that the author is the best person to answer all of the
questions that come up so far. Ideally I would like to be able to directly get into contact with the author in the context of a particular code change line. I would like to ask him questions and/or ask/suggest improvements. Ideally there should be no merging activities at all. Ideally whoever wants the code in should bring it to a state i can just load and understand: what does it do? is it tested? is it covered? ... in the end it all boils down to: is it better? Lukas On 26 November 2011 10:50, Andy Kellens <[hidden email]> wrote: > Hello, > > Already many thanks for all the input we received. > As a way to stimulate the discussion a bit, you can find my list of questions below. > > * Who made the changes? > * How big are the changes? Are they local or do they touch a lot of stuff? > * Was this method changed a lot of times in the past? Why did it change? > (I noticed in my projects stuff that keeps on changing most of the times indicates that something is not really right in the design) > * Is this change part of a whole series of changes? (when someone is working on a feature and commits intermittently, I sometimes prefer to wait loading their changes until I know they are done) > * Why were the changes made? Bugfix? New feature? Refactoring? Cleanup? > * Who wrote the original code that was changed? Was any of my old code changed? > * Is the commit coherent? Do all the changes within the commit belong together or are they unrelated? > (This also happens often I think: someone fixes a bug and decides to also rename a method or clean something up … very annoying to find out what really happened) > * Is this change impacted/influenced by a change that happened in another branch of my software? > * Did this change ever happen before? > * Is this change reverting the code to an old state? > (someone changes some code to actually roll back something; would like to know this since it might be by accident) > * Did the person who made the change also update the tests? Was this necessary? > * If I just load the change, what are the changes that it breaks my current system? > * When multiple packages were committed at the same time: do I really need to load all of them now, or can I just load/merge with the version of the package I'm working on? > > Kind regards, > > Andy > > On 26 Nov 2011, at 08:56, Stéphane Ducasse wrote: > >> tx :) >> >> On Nov 24, 2011, at 1:38 PM, [hidden email] wrote: >> >>> - When the version to be merged into the trunk is on a branch which I >>> already did merge a couple of versions earlier I want to have to see/think >>> about only those changes that are new (i.e. the changes between the version >>> last merged and the current version to be merged and not all changes >>> between the current version to be merged and the trunk version to be merged >>> into) >>> >>> e.g. >>> >>> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 6.0 -> 7.0 Trunk >>> \ / / ?? questions asked here >>> \ / / >>> -> 2.1 -> 2.2 -> 2.3 -> 2.4 Branch >>> >>> The branch version 2.2 has already been merged into trunk version 5.0 some >>> time earlier. >>> Therefore I'd like to merge only the changes between 2.2 and 2.4 into 7.0. >>> I don't know what Pharo does but VisualWorksdisplays all changes between >>> 2.4 and 7.0 while giving additional information about the last common >>> version which is determined to be 2.0 because previous merges are not >>> considered. >>> This forces me to think about how to merge all changes up to version 2.2 >>> once again. >>> We fixed that in our tools, of course (in VW 7.6), offering an additional >>> merge option which only merges the changes since a user selected common >>> version. >>> >>> Regards >>> Thorsten >>> >>> >>> Thorsten Seitz >>> Development Center Architekturkonzeption und -entwicklung (T.SVD 32) >>> >>> DB Systel GmbH >>> Raum 5C.136, Alfred-Herrhausen-Allee 1, 65760 Eschborn >>> Tel. 069 265-48245, intern 955- >>> _________________________________________________________________________________ >>> >>> Der DB-Konzern im Internet >> http://www.deutschebahn.com >>> >>> Sitz der Gesellschaft: Frankfurt am Main >>> Registergericht: Frankfurt am Main, HRB 78707 >>> USt-IdNr.: DE252204770 >>> Geschäftsführer: Detlef Exner (Vorsitzender), Dr. Burkhard Klanke, Dr. >>> Klaus Rüffler >>> Vorsitzender des Aufsichtsrates: Dr. Rolf Kranüchel >>> >>> >>> |------------> >>> | Von: | >>> |------------> >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |Stéphane Ducasse <[hidden email]> | >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |------------> >>> | An: | >>> |------------> >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |ESUG Members <[hidden email]> | >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |------------> >>> | Datum: | >>> |------------> >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |23.11.2011 16:58 | >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |------------> >>> | Betreff: | >>> |------------> >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |[Esug-list] Call for your input on questions you ask yourselves during merge | >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |------------> >>> | Gesendet | >>> | von: | >>> |------------> >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> |[hidden email] | >>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>> >>> >>> >>> >>> >>> Hi guys >>> >>> We are writing some articles on the work of veronica to support merging >>> activities. We need your input great smalltalk community :) >>> What are the questions that you ask yourselves when you are/want to merge >>> some code in your project? >>> We would like to do a compilation of questions and also evaluate how the >>> solution of veronica solves them or part of them. >>> >>> Here are some typical questions we asked ourselves. >>> - What other changes did this change require? >>> - Can I integrate this change right now? >>> - How large it is? >>> - Who made it? >>> - Is it still valid (when I'm working on an old change)? >>> - Is this change impacted by a change that happened in another >>> branch of my software? >>> >>> Stef D., Andy K. and Veronica U. >>> >>> >>> _______________________________________________ >>> Esug-list mailing list >>> [hidden email] >>> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >>> >>> >>> >> >> >> _______________________________________________ >> Esug-list mailing list >> [hidden email] >> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org > -- Lukas Renggli www.lukas-renggli.ch _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
Hi Stef, I would just add that in a team environment, with some form
of continuous integration, it is useful to know what other proposed changes are in flight. It could be interesting to reason about both an individual merge, and any concurrent merging. cheers, Mike _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Lukas Renggli
On Nov 26, 2011, at 1:19 PM, Lukas Renggli wrote: > I suspect that the author is the best person to answer all of the > questions that come up so far. Ideally I would like to be able to > directly get into contact with the author in the context of a > particular code change line. I would like to ask him questions and/or > ask/suggest improvements. > > Ideally there should be no merging activities at all. Ideally whoever > wants the code in should bring it to a state i can just load and > understand: what does it do? is it tested? is it covered? ... in the > end it all boils down to: is it better? Nothing is so simple. There is the automatic part of merging and this is should be ok. The process can cover: is the code compliant with certain rules, runs the tests…. Now there are cases where you cannot access the author. And there are cases where you do not want a given features or its implementation. For example would you accept a code that add , on Object to concatenate objects or something like that. Now the question is also if you work on code you wrote or somebody else and that you do not really know. From that perspectives I want tools that will help me asking queries as: - is the change I'm looking composed of different independent features? - did the change changed after? - how many time these methods got changed? - are the methods invoked in later change? - can I apply this change directly? - on what this change rely? - what is the spread of the changes? - what is the vocabulary of the changes? (if this is just changing Smalltalk by self environment….kind of). Stef > > Lukas > > > On 26 November 2011 10:50, Andy Kellens <[hidden email]> wrote: >> Hello, >> >> Already many thanks for all the input we received. >> As a way to stimulate the discussion a bit, you can find my list of questions below. >> >> * Who made the changes? >> * How big are the changes? Are they local or do they touch a lot of stuff? >> * Was this method changed a lot of times in the past? Why did it change? >> (I noticed in my projects stuff that keeps on changing most of the times indicates that something is not really right in the design) >> * Is this change part of a whole series of changes? (when someone is working on a feature and commits intermittently, I sometimes prefer to wait loading their changes until I know they are done) >> * Why were the changes made? Bugfix? New feature? Refactoring? Cleanup? >> * Who wrote the original code that was changed? Was any of my old code changed? >> * Is the commit coherent? Do all the changes within the commit belong together or are they unrelated? >> (This also happens often I think: someone fixes a bug and decides to also rename a method or clean something up … very annoying to find out what really happened) >> * Is this change impacted/influenced by a change that happened in another branch of my software? >> * Did this change ever happen before? >> * Is this change reverting the code to an old state? >> (someone changes some code to actually roll back something; would like to know this since it might be by accident) >> * Did the person who made the change also update the tests? Was this necessary? >> * If I just load the change, what are the changes that it breaks my current system? >> * When multiple packages were committed at the same time: do I really need to load all of them now, or can I just load/merge with the version of the package I'm working on? >> >> Kind regards, >> >> Andy >> >> On 26 Nov 2011, at 08:56, Stéphane Ducasse wrote: >> >>> tx :) >>> >>> On Nov 24, 2011, at 1:38 PM, [hidden email] wrote: >>> >>>> - When the version to be merged into the trunk is on a branch which I >>>> already did merge a couple of versions earlier I want to have to see/think >>>> about only those changes that are new (i.e. the changes between the version >>>> last merged and the current version to be merged and not all changes >>>> between the current version to be merged and the trunk version to be merged >>>> into) >>>> >>>> e.g. >>>> >>>> 1.0 -> 2.0 -> 3.0 -> 4.0 -> 5.0 -> 6.0 -> 7.0 Trunk >>>> \ / / ?? questions asked here >>>> \ / / >>>> -> 2.1 -> 2.2 -> 2.3 -> 2.4 Branch >>>> >>>> The branch version 2.2 has already been merged into trunk version 5.0 some >>>> time earlier. >>>> Therefore I'd like to merge only the changes between 2.2 and 2.4 into 7.0. >>>> I don't know what Pharo does but VisualWorksdisplays all changes between >>>> 2.4 and 7.0 while giving additional information about the last common >>>> version which is determined to be 2.0 because previous merges are not >>>> considered. >>>> This forces me to think about how to merge all changes up to version 2.2 >>>> once again. >>>> We fixed that in our tools, of course (in VW 7.6), offering an additional >>>> merge option which only merges the changes since a user selected common >>>> version. >>>> >>>> Regards >>>> Thorsten >>>> >>>> >>>> Thorsten Seitz >>>> Development Center Architekturkonzeption und -entwicklung (T.SVD 32) >>>> >>>> DB Systel GmbH >>>> Raum 5C.136, Alfred-Herrhausen-Allee 1, 65760 Eschborn >>>> Tel. 069 265-48245, intern 955- >>>> _________________________________________________________________________________ >>>> >>>> Der DB-Konzern im Internet >> http://www.deutschebahn.com >>>> >>>> Sitz der Gesellschaft: Frankfurt am Main >>>> Registergericht: Frankfurt am Main, HRB 78707 >>>> USt-IdNr.: DE252204770 >>>> Geschäftsführer: Detlef Exner (Vorsitzender), Dr. Burkhard Klanke, Dr. >>>> Klaus Rüffler >>>> Vorsitzender des Aufsichtsrates: Dr. Rolf Kranüchel >>>> >>>> >>>> |------------> >>>> | Von: | >>>> |------------> >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |Stéphane Ducasse <[hidden email]> | >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |------------> >>>> | An: | >>>> |------------> >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |ESUG Members <[hidden email]> | >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |------------> >>>> | Datum: | >>>> |------------> >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |23.11.2011 16:58 | >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |------------> >>>> | Betreff: | >>>> |------------> >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |[Esug-list] Call for your input on questions you ask yourselves during merge | >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |------------> >>>> | Gesendet | >>>> | von: | >>>> |------------> >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> |[hidden email] | >>>>> --------------------------------------------------------------------------------------------------------------------------------------------------| >>>> >>>> >>>> >>>> >>>> >>>> Hi guys >>>> >>>> We are writing some articles on the work of veronica to support merging >>>> activities. We need your input great smalltalk community :) >>>> What are the questions that you ask yourselves when you are/want to merge >>>> some code in your project? >>>> We would like to do a compilation of questions and also evaluate how the >>>> solution of veronica solves them or part of them. >>>> >>>> Here are some typical questions we asked ourselves. >>>> - What other changes did this change require? >>>> - Can I integrate this change right now? >>>> - How large it is? >>>> - Who made it? >>>> - Is it still valid (when I'm working on an old change)? >>>> - Is this change impacted by a change that happened in another >>>> branch of my software? >>>> >>>> Stef D., Andy K. and Veronica U. >>>> >>>> >>>> _______________________________________________ >>>> Esug-list mailing list >>>> [hidden email] >>>> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >>>> >>>> >>>> >>> >>> >>> _______________________________________________ >>> Esug-list mailing list >>> [hidden email] >>> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >> >> >> _______________________________________________ >> Esug-list mailing list >> [hidden email] >> http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org >> > > > > -- > Lukas Renggli > www.lukas-renggli.ch > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
In reply to this post by Stéphane Ducasse
Hi,
Besides the questions you asked, I would be interested in how changes are grouped together. In particular, when merging the work of multiple authors with changes stacked on top of each other, I would like to be able to group the differences in different ways. For example: - I would like to be able to group them by author, or - I would like to group them by time (such that commits on different packages get closer together when they are committed closer in time). Cheers, Doru On 23 Nov 2011, at 16:57, Stéphane Ducasse wrote: > Hi guys > > We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) > What are the questions that you ask yourselves when you are/want to merge some code in your project? > We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. > > Here are some typical questions we asked ourselves. > - What other changes did this change require? > - Can I integrate this change right now? > - How large it is? > - Who made it? > - Is it still valid (when I'm working on an old change)? > - Is this change impacted by a change that happened in another branch of my software? > > Stef D., Andy K. and Veronica U. > > > _______________________________________________ > Esug-list mailing list > [hidden email] > http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org -- www.tudorgirba.com "Don't give to get. Just give." _______________________________________________ Esug-list mailing list [hidden email] http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org |
Free forum by Nabble | Edit this page |