Marco D’Ambros university of Lugano switzerland Michele Lanza university of Lugano switzerland Romain robbes University of chile chile
May 06, 2015
Marco D’Ambrosuniversity of Lugano
switzerland
Michele Lanzauniversity of Lugano
switzerland
Romain robbesUniversity of chile
chile
neo
Neo
neo
Neo Neo’s girlfriend
neo
Neo Neo’s girlfriend
commit 2.0
neo
Neo Neo’s girlfriend
commit 2.0 pharo ide
neo
Neo Neo’s girlfriend
commit 2.0
eclipse ide
pharo ide
neo
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
documenting changes
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
neo
documenting changes
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
Development team
neo
documenting changes
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
Development team
neo
documenting changes
communication means
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
Development team
neo
documenting changes
communication means
ResearcherResearcher
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
Development team
neo
documenting changes
communication means
ResearcherResearcher
Mining software
repositories
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
developers often do not have time and resources to write detailed commit comments
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
time pressure
developers often do not have time and resources to write detailed commit comments
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
time pressure
boss pressure
developers often do not have time and resources to write detailed commit comments
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
time pressure
boss pressure deadline pressure
developers often do not have time and resources to write detailed commit comments
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
time pressure
boss pressure deadline pressure
i don't have the time for many
details
Let's just write "Added
context menu"
developers often do not have time and resources to write detailed commit comments
* data source: gcc software project (gcc.gnu.org)
** data source: vuze software project (www.vuze.com)
more than 4,800 commits involve more
than 10 files*
more than 5,300 commit comments are
left blank**
large commits are difficult to document and often commit comments are left blank
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
* real commit comments committed in vuze (www.vuze.com) in 2010
“bugabugabuga”
“Next” “Arg”
“changes”*
now, how am i suppose to
understand these changes?
non-descriptive comments make developers’ lives harder
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
* real commit comments committed in vuze (www.vuze.com) in 2010
“bugabugabuga”
“Next” “Arg”
“changes”*
now, how am i suppose to
understand these changes?
mister programmerson
non-descriptive comments make developers’ lives harder
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
* real commit comments committed in vuze (www.vuze.com) in 2010
“bugabugabuga”
“Next” “Arg”
“changes”*
now, how am i suppose to
understand these changes?
mister programmerson
yes??
non-descriptive comments make developers’ lives harder
but there is an alternative...
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
are you sure that you want to use svn to document your changes?
well, i don’t know...
but there is an alternative...
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
are you sure that you want to use svn to document your changes?
well, i don’t know...
mr. programmerson, now you have a
choice
take the blue pill to continue using svn
take the red pill to switch to commit 2.0
IDE
SCM repository
Commit 2.0Developer
Code Viz
commit 2.0 is an ide enhancement which enriches commit
comments with visualization, providing a context to
changes and a better means to communicate. it is built on top of the ide and does not change the standard
commit mechanism
SCM repository
not change the standard
I go for commit 2.0... but what is it?
IDE
SCM repository
Commit 2.0Developer
Code Viz
commit 2.0 is an ide enhancement which enriches commit
comments with visualization, providing a context to
changes and a better means to communicate. it is built on top of the ide and does not change the standard
commit mechanism
SCM repository
not change the standard
I go for commit 2.0... but what is it?
it is hot here... let me remove
the jacket
IDE
SCM repository
Commit 2.0Developer
Code Viz
commit 2.0 is an ide enhancement which enriches commit
comments with visualization, providing a context to
changes and a better means to communicate. it is built on top of the ide and does not change the standard
commit mechanism
SCM repository
not change the standard
I go for commit 2.0... but what is it?
it is hot here... let me remove
the jacket
SCMrepository
how does it work?
SCMrepository
how does it work?
SCMrepository
how does it work?
when the developer clicks the commit button, commit 2.0
creates a visualization of the changes between his version and
the one in the SCM repository
SCMrepository
how does it work?
when the developer clicks the commit button, commit 2.0
creates a visualization of the changes between his version and
the one in the SCM repository
SCMrepository
the developer can interact with and
annotate the visualization to document the
performed changes
how does it work?
when the developer clicks the commit button, commit 2.0
creates a visualization of the changes between his version and
the one in the SCM repository
Added a listener
Refactored the class
finally, commit 2.0 publishes the code on the scm repository and
the annotated visualization on a blog.
the blog is used because no scm supports
visualization
Added a listener
Refactored the class
finally, commit 2.0 publishes the code on the scm repository and
the annotated visualization on a blog.
the blog is used because no scm supports
visualization
Added a listener
Refactored the class
SCMrepository
code
finally, commit 2.0 publishes the code on the scm repository and
the annotated visualization on a blog.
the blog is used because no scm supports
visualization
Added a listener
Refactored the class
Visualization
Posterous blog
SCMrepository
code
finally, commit 2.0 publishes the code on the scm repository and
the annotated visualization on a blog.
the blog is used because no scm supports
visualization
package
Class
# attributes
# m
etho
ds
can you tell me more about the visualizations?
the size of the classes is
proportional to the number of
attributes (width) and methods
(height)
the coarse grained view shows all the
packages in a system and, within each of
them, all the classes belonging to the
package
Class
inhe
ritance
Metho
d
# l
ines
of c
ode
the height of methods is
proportional to the number of lines of code,
while the width is fixed
The fine grained view represents classes and
inheritance relationships. For each class the view shows all the methods
the class has
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
I see... let me guess the color scheme:
and you use lighter color for the containers
Addition
deletion
modification
indirect changes
sure, here you can see a coarse
grained view where the user fixed a bug and
enriched some entities. you can see
which classes are involved in each
change
it looks fancy, but can you show me an
example?
in the fine grained view
on the right you can see which methods
were added and modified to perform ui
changes and to improve name completion
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
absolutely!you can find it at:
commit20.inf.usi.ch
for the supported ide ask them
wow... is this real?
commit 2.0 was originally
created for the pharo smalltalk ide
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
absolutely!you can find it at:
commit20.inf.usi.ch
for the supported ide ask them
wow... is this real?
commit 2.0 is also
available for eclipse. ask for a demo!
commit 2.0 was originally
created for the pharo smalltalk ide
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
absolutely!you can find it at:
commit20.inf.usi.ch
for the supported ide ask them
wow... is this real?
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
DeveloperDeveloperDeveloperDeveloperDeveloper
neo
is this really the
end of the commit 2.0 story?
to be continued...
actually no... we plan to conduct a
user study to evaluate commit 2.0 and to
improve scm to add image support