baishakhi ray christopher wiley miryung kim the
play

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:


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

  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 ¡ ¡ ¡

  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. ¡ ¡ ¡

  4. Gnu Emacs gEmacs_24.0 ¡ gEmacs_20.0 ¡ gEmacs_18.0 ¡ gEmacs_5.0 ¡ gEmacs_1.0 ¡ 4

  5. Gnu Emacs Urgent ¡ ¡ Requirement? ¡ gEmacs_24.0 ¡ gEmacs_20.0 ¡ gEmacs_18.0 ¡ gEmacs_5.0 ¡ gEmacs_1.0 ¡ 5

  6. Gnu Emacs Urgent ¡ ¡ Requirement? ¡ gEmacs_24.0 ¡ gEmacs_20.0 ¡ Fork ¡ gEmacs_18.0 ¡ gEmacs_5.0 ¡ gEmacs_1.0 ¡ 6

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

  8. q Involves ¡repetitive ¡work ¡to ¡port ¡bug-­‑fixes ¡and ¡new ¡ feature. ¡ ¡ Gnu Emacs GE_5.0 GE_18.0 GE_20.0 GE_1.0 GE_24.0 XE_1.0 XE_20.0 XE_10.0 XEmacs 8

  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

  10. C/ ¡Header ¡ KLOC ¡ Authors ¡ Number ¡ files ¡ of ¡ Commits ¡ Gnu ¡Emacs ¡ 372 ¡ 246 ¡ 266 ¡ 10525 ¡ XEmacs ¡ 496 ¡ 282 ¡ 11 ¡ 754 ¡

  11. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 11

  12. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 12

  13. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 14

  14. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 15

  15. ¡ 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

  16. Patch1 h1 Patch2 h2 (Jan ’1 n ’10) (Mar ‘1 ‘10) **** Old **** **** Old **** X1 for(i=0;i<MAX;i++){ Y1 for(j=0;j<MAX;j++) { X2 - x = array[i]+x; Y2 q = p + q; X3 - y = foo(x); Y3 - q = array[j]+p; X4 - x = x-y; Y4 - p = foo1(q); X5 } Y5 } **** New **** **** New **** X6 for(i=0;i<MAX;i++) { Y6 for(j=0;j<MAX;j++) { X7 + y = x+y; Y7 q = p + q; Y8 + q = array[j] + q; X8 + x = array[i]+x; Y9 + p = foo1(p,q); X9 + y = foo(x,y); Y10 } 17 X10 } �

  17. Patch1 h1 Patch2 h2 (Jan ’1 n ’10) (Mar ‘1 ‘10) **** Old **** **** Old **** X1 for(i=0;i<MAX;i++){ Y1 for(j=0;j<MAX;j++) { X2 - x = array[i]+x; Y2 q = p + q; X3 - y = foo(x); Y3 - q = array[j]+p; X4 - x = x-y; Y4 - p = foo1(q); X5 } Y5 } **** New **** **** New **** X6 for(i=0;i<MAX;i++) { Y6 for(j=0;j<MAX;j++) { X7 + y = x+y; Y7 q = p + q; Y8 + q = array[j] + q; X8 + x = array[i]+x; Y9 + p = foo1(p,q); X9 + y = foo(x,y); Y10 } 18 X10 } �

  18. Patch1 h1 Patch2 h2 (Jan ’1 n ’10) (Mar ‘1 ‘10) **** Old **** **** Old **** X1 for(i=0;i<MAX;i++){ Y1 for(j=0;j<MAX;j++) { X2 - x = array[i]+x; Y2 q = p + q; X3 - y = foo(x); Y3 - q = array[j]+p; X4 - x = x-y; Y4 - p = foo1(q); X5 } Y5 } Ported ¡ edits ¡ **** New **** **** New **** X6 for(i=0;i<MAX;i++) { Y6 for(j=0;j<MAX;j++) { X7 + y = x+y; Y7 q = p + q; Y8 + q = array[j] + q; X8 + x = array[i]+x; Y9 + p = foo1(p,q); X9 + y = foo(x,y); Y10 } 19 X10 } �

  19. Patch1 h1 Patch2 h2 (Jan ’1 n ’10) (Mar ‘1 ‘10) **** Old **** **** Old **** X1 for(i=0;i<MAX;i++){ Y1 for(j=0;j<MAX;j++) { X2 - x = array[i]+x; Y2 q = p + q; X3 - y = foo(x); Y3 - q = array[j]+p; X4 - x = x-y; Y4 - p = foo1(q); X5 } Y5 } **** New **** **** New **** X6 for(i=0;i<MAX;i++) { Y6 for(j=0;j<MAX;j++) { X7 + y = x+y; Y7 q = p + q; Y8 + q = array[j] + q; X8 + x = array[i]+x; Y9 + p = foo1(p,q); X9 + y = foo(x,y); Y10 } 20 X10 } �

  20. ¡ From ¡our ¡empirical ¡study ¡of ¡cross-­‑system ¡ porting ¡in ¡the ¡BSD ¡product ¡family, ¡we ¡find ¡ Repertoire’s ¡Precision: ¡94%, ¡ ¡Recall: ¡84%. ¡ ¡ ¡ 21

  21. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 22

  22. ported_edit ¡ Repertoire ¡Database ¡ § porting ¡id ¡ § Edit ¡1 ¡ List[ported_edit] ¡ § Edit ¡2 ¡ List[commits] ¡ § total ¡ported ¡lines ¡ ¡ Edit ¡ commits ¡ patch ¡ § commit ¡id ¡ § commit_id ¡ § start ¡line ¡ § patch ¡id ¡ § project ¡id ¡ § end ¡line ¡ § patch ¡name ¡ § author ¡ § patch ¡id ¡ § total ¡edited ¡lines ¡ ¡ § commit ¡date ¡ ¡ ¡ § Total ¡ported ¡lines ¡ § List[patch] ¡ ¡ Populated by “Data Populated by “Ported edits identification” Module Extraction” Module 23

  23. User Interface Analysis ¡Wizard : ¡ ¡ Input ¡Wizard ¡ Porting ¡Frequency ¡/ ¡ ¡ Projects, ¡Repository ¡ File ¡Distribution ¡/ ¡ URLs, ¡and ¡Time ¡Period ¡ Developer ¡/ ¡Porting ¡Latency ¡ Back End Ported ¡edits ¡ Data ¡extraction: ¡ identification: ¡ Repertoire ¡ diff ¡patches ¡ Developers ¡ (CCFinderX, ¡N-­‑gram ¡ DB ¡ Commit ¡dates ¡ Matching) ¡ 24

Recommend


More recommend