Commit 2.0 - Enriching commit comments with visualization

Post on 06-May-2015

3,209 views 2 download

description

The real story of how Neo Programmerson took the red pill and switch to the Commit 2.0 world

transcript

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