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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend