socio-technical evolution and migration in the ruby ecosystem

25
Socio-Technical Evolution and Migration in the Ruby Ecosystem Eleni Constantinou, Tom Mens COMPLEXYS Research Institute, UMONS BENEVOL 2016, Utrecht

Upload: tom-mens

Post on 08-Jan-2017

42 views

Category:

Science


1 download

TRANSCRIPT

Page 1: Socio-technical evolution and migration in the Ruby ecosystem

Socio-Technical Evolution and Migration in the Ruby

Ecosystem

Eleni Constantinou, Tom MensCOMPLEXYS Research Institute, UMONS

BENEVOL 2016, Utrecht

Page 2: Socio-technical evolution and migration in the Ruby ecosystem

2

IntroductionSoftware ecosystem

• Collection of software projects that are developed and evolve together in the same environment [1]

Ecosystem environment• Development team Social aspect⇒• Source code artefacts Technical aspect⇒

Modifications• Social: Contributors joining/leaving• Technical: New/obsolete source code files

[1] M. Lungu. Towards reverse engineering software ecosystems. Int'l Conf. Software Maintenance, pages 428-431, 2008.

Page 3: Socio-technical evolution and migration in the Ruby ecosystem

3

Introduction

Evolution• Longevity• Growth

Ecosystem sustainability

Long-term effect of social/technical modifications

A sustainable software ecosystem can increase or maintain its

user/developer community over longer periods of time and can

survive inherent changes such as new technologies or new

products (e.g. from competitors) that can change the population

(the community of users, developers etc) [2]

[2] D. Dhungana, I. Groher, E. Schludermann, S. Biffl. Software ecosystems vs. natural ecosystems: learning from the ingenious mind of nature. Eur. Conf. on Software Architecture: Companion Volume, pages 96-102, 2010.

Page 4: Socio-technical evolution and migration in the Ruby ecosystem

Background

4

Time Unit 1

Time Unit 2

Time Unit 3 … Time

Unit N-2Time

Unit N-1Time

Unit N

START

END

Technical

Artefacts

Technical

Artefacts

P1 P3P2 P1 P3P4

Page 5: Socio-technical evolution and migration in the Ruby ecosystem

5

DefinitionsProject Metrics

ObsoleteProjects(t)

NewProjects(t)

ActiveProjects(t)

ProjectRenewal(t)

ProjectAbandonment(t)

P2

P4

P2 P1 P3

P1 P3

P1 P3

P4 P4

P2

Page 6: Socio-technical evolution and migration in the Ruby ecosystem

6

Definitions

Team Metrics

Leavers(t)

Joiners(t)

Stayers(t)

Team(t)

TeamRenewal(t)

TeamAbandonment(t)

Page 7: Socio-technical evolution and migration in the Ruby ecosystem

7

DefinitionsFile Metrics

Obsolete(t)

New(t)

Maintained(t)

FileRenewal(t)

FileAbandonment(t)

X✔

⃝�✔

X✔ ⃝�X ⃝�

Page 8: Socio-technical evolution and migration in the Ruby ecosystem

8

Source Code Files

Refactoring activities• Renamed files• Moved files

Validity of renewal, abandonment measurements

Page 9: Socio-technical evolution and migration in the Ruby ecosystem

9

Research QuestionsRQ1 How does the ecosystem grow over time?

RQ2 How do the technical artefacts of the ecosystem evolve?

RQ3 How does the ecosystem’s contributor team evolve?

RQ4 How do changes in the contributor team impact the technical artefacts?

Page 10: Socio-technical evolution and migration in the Ruby ecosystem

10

Dataset• Ruby ecosystem in GitHub• GHTorrent dataset [2] (2016-09-05 dump)

• Timespan: October 2007 – September 2016

• Time unit: year quarters

• Commit activity• Three levels: Base

project/Forks/Ecosystem

[2] G. Gousios. The GHTorrent dataset and tool suite. Working Conf. Mining Software Repositories, pages 233-236, 2013.

Page 11: Socio-technical evolution and migration in the Ruby ecosystem

11

Dataset Perils – Mitigation & filtersFilter Description Perils

1 Eliminate non-Ruby projects

2 Eliminate inactive projects Low project activity, inactive project, repository is not a project

3 Eliminate isolated projects Personal projects

4 Eliminate forks without merges to the base project

Inactive project, few projects use pull requests

5 Eliminate short-lived contributors Noise of occasional/short-lived contributors

6 Only consider source code files in commits

Non-software development project

Page 12: Socio-technical evolution and migration in the Ruby ecosystem

12

DatasetBase Forks Ecosystem

Projects 10,792 49,101 60,073

Contributors 42,206 34,317 55,924

Touched Files 681,539 191,016 712,300

Commits 2,638,097 887,030 3,525,127

LOC 389,930,604 77,510,268 467,440,872

Page 13: Socio-technical evolution and migration in the Ruby ecosystem

RQ1 How does the ecosystem grow over time?

13

Commits Lines of Code (LOC)

Page 14: Socio-technical evolution and migration in the Ruby ecosystem

RQ1 How does the ecosystem grow over time?

14

Base Projects Forks

Quarter 25 (November 2013-February 2014)Small number of new projects

Page 15: Socio-technical evolution and migration in the Ruby ecosystem

RQ1 How does the ecosystem grow over time?

15

Base Projects Forks

Before quarter 25• Base Projects: 30-40% new projects, less than 10% abandoned• Forks: more than 60% new forks

Page 16: Socio-technical evolution and migration in the Ruby ecosystem

RQ1 How does the ecosystem grow over time?

16

Evidence of contributor migration to JavaScriptAfter quarter 17 (December 2011)

Larger growth of JavaScript ecosystem

Page 17: Socio-technical evolution and migration in the Ruby ecosystem

RQ2 How do the technical artefacts (files) evolve?

Base Projects ForksBase projects: Bulk of development activityAfter quarter 25: decrease of new files

17

Page 18: Socio-technical evolution and migration in the Ruby ecosystem

RQ3 How does the contributor team evolve?

Base Projects Forks

Contributors leave forks but continue to participate in base projectsAfter quarter 20: more Leavers ; less Joiners

18

Ecosystem

Page 19: Socio-technical evolution and migration in the Ruby ecosystem

RQ3 How does the contributor team evolve?

Base Project Forks

Decreasing renewal ; increasing abandonmentAfter quarter 25: Abandonment > Renewal

19

Ecosystem

Page 20: Socio-technical evolution and migration in the Ruby ecosystem

20

Ecosystem Active in Ruby

JavaScript 18,038

Python 10,707

Java 7,363

C 6,406

Ecosystem Abandoned Ruby Percentage

JavaScript 13,814 77%

Python 8,131 76%

Java 5,132 70%

C 4,174 65%

Most Ruby Leavers…• worked in JavaScript projects in parallel to Ruby projects• Continued to work in JavaScript after abandoning Ruby

RQ3 How does the contributor team evolve?

Page 21: Socio-technical evolution and migration in the Ruby ecosystem

21

RQ4 How do changes in the contributor team impact the technical artefacts?

Diversity index of Leavers(relative entropy)

Increased Leaver specialization throughout time:Large contribution to important projects

Page 22: Socio-technical evolution and migration in the Ruby ecosystem

22

Threats to validity• Multiple user accounts

• Less common within the same GitHub repository• Identity merging [3]

• Programming language identification

• GitHub dataset• Filters to eliminate noise• Activity outside GitHub• Merged pull requests appear as non-merged in GitHub• Not all activity results from registered users

[3] M. Goeminne and T. Mens, “A comparison of identity merge algorithms for software repositories,” Science of Computer Programming, vol. 78, no. 8, pages 971–986, 2013

Page 23: Socio-technical evolution and migration in the Ruby ecosystem

ConclusionRuby software ecosystem in GitHub• Investigate the permanent modifications of the

socio-technical network• Impact of permanent changes in contributor

team on the technical artefacts• Preliminary evidence about contributor

migration across different ecosystems (Ruby → JavaScript)

Identify risks in project/ecosystem evolution due to important team changes

23

Page 24: Socio-technical evolution and migration in the Ruby ecosystem

24

Ongoing/Future WorkContributor migration across different ecosystems

Advanced socio-technical analyses• Socio-technical congruence• Socio-technical debt• Their effect on the ecosystem evolution

Page 25: Socio-technical evolution and migration in the Ruby ecosystem

25

Thank you!