Baishakhi Ray, Christopher Wiley, Miryung Kim The University - - PowerPoint PPT Presentation

baishakhi ray christopher wiley miryung kim the
SMART_READER_LITE
LIVE PREVIEW

Baishakhi Ray, Christopher Wiley, Miryung Kim The University - - PowerPoint PPT Presentation

Baishakhi Ray, Christopher Wiley, Miryung Kim The University of Texas at Austin Software forking has become popular. Open source forked projects:


slide-1
SLIDE 1

Baishakhi ¡Ray, ¡Christopher ¡Wiley, ¡Miryung ¡Kim ¡ The ¡University ¡of ¡Texas ¡at ¡Austin ¡ ¡

slide-2
SLIDE 2

¡ Software ¡forking ¡has ¡become ¡popular. ¡ ¡ Open ¡source ¡forked ¡projects: ¡

§ OpenBSD ¡from ¡NetBSD ¡ § XEmacs ¡from ¡GNU ¡Emacs ¡

¡ Proprietary ¡forked ¡projects: ¡

§ Mac ¡OS ¡X ¡from ¡FreeBSD ¡ § EnterpriseDB ¡from ¡PostgreSQL ¡

¡

¡

slide-3
SLIDE 3

¡

¡ Developers ¡port ¡similar ¡feature ¡additions ¡

and ¡bug-­‑fixes ¡across ¡the ¡projects. ¡ ¡

¡ Repertoire ¡analyzes ¡the ¡extent ¡and ¡

characteristics ¡of ¡cross-­‑system ¡porting ¡ across ¡forked ¡projects. ¡ ¡

¡

slide-4
SLIDE 4

gEmacs_1.0 ¡ gEmacs_5.0 ¡ gEmacs_18.0 ¡ gEmacs_20.0 ¡ gEmacs_24.0 ¡

Gnu Emacs

4

slide-5
SLIDE 5

5

gEmacs_1.0 ¡ gEmacs_5.0 ¡ gEmacs_18.0 ¡ gEmacs_20.0 ¡ gEmacs_24.0 ¡

Gnu Emacs

Urgent ¡ ¡ Requirement? ¡

slide-6
SLIDE 6

6

gEmacs_1.0 ¡ gEmacs_5.0 ¡ gEmacs_18.0 ¡ gEmacs_20.0 ¡ gEmacs_24.0 ¡

Gnu Emacs

Urgent ¡ ¡ Requirement? ¡

Fork ¡

slide-7
SLIDE 7

Gnu Emacs XEmacs XE_1.0 XE_10.0 XE_20.0 GE_1.0 GE_5.0 GE_18.0 GE_20.0 GE_24.0

7

slide-8
SLIDE 8

q Involves ¡repetitive ¡work ¡to ¡port ¡bug-­‑fixes ¡and ¡new ¡

  • feature. ¡

¡

8

Gnu Emacs XEmacs XE_1.0 XE_10.0 XE_20.0 GE_1.0 GE_5.0 GE_18.0 GE_20.0 GE_24.0

slide-9
SLIDE 9

Gnu ¡Emacs ¡Commit ¡Messages ¡showing ¡evidence ¡of ¡cross-­‑system ¡porting ¡ Author: ¡Stefan ¡Monnier ¡<monnier@iro.umontreal.ca> ¡ Date: ¡ ¡ ¡Tue ¡Jan ¡11 ¡00:07:32 ¡2011 ¡-­‑0500 ¡ ¡ ¡ ¡ ¡ ¡* ¡lisp/progmodes/prolog.el: ¡Fix ¡up ¡coding ¡conventions ¡and ¡such. ¡ ¡ ¡ ¡ ¡… ¡ ¡ ¡ ¡ ¡(prolog-­‑emacs): ¡Remove. ¡ ¡Use ¡(featurep ¡'xemacs) ¡instead. ¡ ¡ ¡ ¡… ¡ ¡ Author: ¡Richard ¡M. ¡Stallman ¡<rms@gnu.org> ¡ Date: ¡ ¡ ¡Sun ¡Jan ¡22 ¡02:21:32 ¡1995 ¡+0000 ¡ ¡ ¡ ¡ ¡ ¡(term-­‑if-­‑emacs19, ¡term-­‑if-­‑xemacs, ¡term-­‑ifnot-­‑xemacs): ¡ ¡New ¡macros ¡ ¡ ¡ ¡ ¡to ¡conditionalize ¡at ¡compile-­‑time ¡for ¡different ¡emacs ¡versions. ¡

9

slide-10
SLIDE 10

C/ ¡Header ¡ files ¡ KLOC ¡ Authors ¡ Number ¡

  • f ¡

Commits ¡

Gnu ¡Emacs ¡ 372 ¡ 246 ¡ 266 ¡ 10525 ¡ XEmacs ¡ 496 ¡ 282 ¡ 11 ¡ 754 ¡

slide-11
SLIDE 11

User Interface Back End

11

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-12
SLIDE 12

User Interface Back End

12

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-13
SLIDE 13
slide-14
SLIDE 14

User Interface Back End

14

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-15
SLIDE 15

User Interface Back End

15

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-16
SLIDE 16

¡ Input: ¡two ¡set ¡of ¡diff ¡based ¡program ¡patches ¡

from ¡the ¡two ¡input ¡projects. ¡ ¡

¡ Output: ¡ported ¡edits ¡among ¡the ¡patches. ¡

¡

¡ Repertoire ¡compares ¡patches ¡to ¡identify ¡

contents ¡and ¡edit ¡operations’ ¡similarity. ¡ ¡

16

slide-17
SLIDE 17

Patch1 h1 (Jan ’1 n ’10) Patch2 h2 (Mar ‘1 ‘10)

**** Old **** X1 for(i=0;i<MAX;i++){ X2 - x = array[i]+x; X3 - y = foo(x); X4 - x = x-y; X5 } **** New **** X6 for(i=0;i<MAX;i++) { X7 + y = x+y; X8 + x = array[i]+x; X9 + y = foo(x,y); X10 } **** Old **** Y1 for(j=0;j<MAX;j++) { Y2 q = p + q; Y3 - q = array[j]+p; Y4 - p = foo1(q); Y5 } **** New **** Y6 for(j=0;j<MAX;j++) { Y7 q = p + q; Y8 + q = array[j] + q; Y9 + p = foo1(p,q); Y10 }

  • 17
slide-18
SLIDE 18

Patch1 h1 (Jan ’1 n ’10) Patch2 h2 (Mar ‘1 ‘10)

**** Old **** X1 for(i=0;i<MAX;i++){ X2 - x = array[i]+x; X3 - y = foo(x); X4 - x = x-y; X5 } **** New **** X6 for(i=0;i<MAX;i++) { X7 + y = x+y; X8 + x = array[i]+x; X9 + y = foo(x,y); X10 } **** Old **** Y1 for(j=0;j<MAX;j++) { Y2 q = p + q; Y3 - q = array[j]+p; Y4 - p = foo1(q); Y5 } **** New **** Y6 for(j=0;j<MAX;j++) { Y7 q = p + q; Y8 + q = array[j] + q; Y9 + p = foo1(p,q); Y10 }

  • 18
slide-19
SLIDE 19

Patch1 h1 (Jan ’1 n ’10) Patch2 h2 (Mar ‘1 ‘10)

**** Old **** X1 for(i=0;i<MAX;i++){ X2 - x = array[i]+x; X3 - y = foo(x); X4 - x = x-y; X5 } **** New **** X6 for(i=0;i<MAX;i++) { X7 + y = x+y; X8 + x = array[i]+x; X9 + y = foo(x,y); X10 } **** Old **** Y1 for(j=0;j<MAX;j++) { Y2 q = p + q; Y3 - q = array[j]+p; Y4 - p = foo1(q); Y5 } **** New **** Y6 for(j=0;j<MAX;j++) { Y7 q = p + q; Y8 + q = array[j] + q; Y9 + p = foo1(p,q); Y10 }

  • Ported ¡

edits ¡

19

slide-20
SLIDE 20

Patch1 h1 (Jan ’1 n ’10) Patch2 h2 (Mar ‘1 ‘10)

**** Old **** X1 for(i=0;i<MAX;i++){ X2 - x = array[i]+x; X3 - y = foo(x); X4 - x = x-y; X5 } **** New **** X6 for(i=0;i<MAX;i++) { X7 + y = x+y; X8 + x = array[i]+x; X9 + y = foo(x,y); X10 } **** Old **** Y1 for(j=0;j<MAX;j++) { Y2 q = p + q; Y3 - q = array[j]+p; Y4 - p = foo1(q); Y5 } **** New **** Y6 for(j=0;j<MAX;j++) { Y7 q = p + q; Y8 + q = array[j] + q; Y9 + p = foo1(p,q); Y10 }

  • 20
slide-21
SLIDE 21

¡ From ¡our ¡empirical ¡study ¡of ¡cross-­‑system ¡

porting ¡in ¡the ¡BSD ¡product ¡family, ¡we ¡find ¡ Repertoire’s ¡Precision: ¡94%, ¡ ¡Recall: ¡84%. ¡ ¡

¡

21

slide-22
SLIDE 22

User Interface Back End

22

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-23
SLIDE 23

23

ported_edit ¡

§ porting ¡id ¡ § Edit ¡1 ¡ § Edit ¡2 ¡ § total ¡ported ¡lines ¡ ¡

Edit ¡

§ commit ¡id ¡ § start ¡line ¡ § end ¡line ¡ § patch ¡id ¡ ¡

patch ¡

§ patch ¡id ¡ § patch ¡name ¡ § total ¡edited ¡lines ¡ ¡ § Total ¡ported ¡lines ¡ ¡

commits ¡

§ commit_id ¡ § project ¡id ¡ § author ¡ § commit ¡date ¡ ¡ § List[patch] ¡

Repertoire ¡Database ¡

List[ported_edit] ¡ List[commits] ¡

Populated by “Data Extraction” Module Populated by “Ported edits identification” Module

slide-24
SLIDE 24

User Interface Back End

24

Input ¡Wizard ¡

Projects, ¡Repository ¡ URLs, ¡and ¡Time ¡Period ¡

Analysis ¡Wizard: ¡ ¡

Porting ¡Frequency ¡/ ¡ ¡ File ¡Distribution ¡/ ¡ Developer ¡/ ¡Porting ¡Latency ¡

Data ¡extraction: ¡

diff ¡patches ¡ Developers ¡ Commit ¡dates ¡

Ported ¡edits ¡ identification: ¡

(CCFinderX, ¡N-­‑gram ¡ Matching) ¡

Repertoire ¡ DB ¡

slide-25
SLIDE 25

¡ Porting ¡Frequency ¡View ¡ § How ¡much ¡duplicate ¡work ¡is ¡taking ¡place ¡to ¡maintain ¡

the ¡forked ¡project? ¡

¡ File ¡Distribution ¡View ¡ § Is ¡porting ¡mostly ¡concentrated ¡to ¡certain ¡files? ¡ ¡ ¡ Developer ¡Distribution ¡View ¡ § Which ¡developers ¡primarily ¡port ¡edits ¡from ¡one ¡

project ¡to ¡another? ¡

¡ Porting ¡Latency ¡View ¡ § How ¡long ¡it ¡takes ¡a ¡patch ¡to ¡port ¡from ¡one ¡project ¡to ¡

another? ¡

slide-26
SLIDE 26
slide-27
SLIDE 27

Managers ¡and ¡product ¡architects ¡can ¡make ¡ informed ¡decision ¡about ¡how ¡to ¡manage ¡a ¡ product ¡family. ¡ REPERTOIRE ¡helps ¡to ¡monitor ¡cross ¡system ¡ porting. ¡

27

slide-28
SLIDE 28

¡ Repertoire ¡can ¡be ¡downloaded ¡from ¡: ¡

¡ ¡ ¡ ¡ ¡http://dolphin.ece.utexas.edu/Repertoire.html ¡

¡

¡ A ¡Case ¡Study ¡of ¡Cross-­‑System ¡Porting ¡in ¡Forked ¡

Software ¡Projects, ¡Baishakhi ¡Ray, ¡Miryung ¡Kim, ¡ FSE ¡'12 ¡

§ Presentation: ¡8:30 ¡am ¡on ¡Thursday ¡ ¡

28

slide-29
SLIDE 29

¡ This ¡work ¡was ¡in ¡part ¡supported ¡by ¡National ¡

Science ¡Foundation ¡under ¡the ¡grants ¡ CCF-­‑1117902, ¡CCF-­‑1149391, ¡and ¡ CCF-­‑1043810 ¡and ¡by ¡Microsoft ¡SEIF ¡award. ¡ ¡

slide-30
SLIDE 30

Baishakhi ¡Ray, ¡Christopher ¡Wiley, ¡Miryung ¡Kim ¡ The ¡University ¡of ¡Texas ¡at ¡Austin ¡ ¡