14. Method
Selection Analysis Modeling
Domain Model
Feature Model
Membership
Transparency
License CoC RC
Language Changes
Structural Improvement
Decision-making Model
Dictator Commitee
Company Community
16. GPL
TRANSPARENCY MEMBERSHIP
LICENSE COC RC WHO HOW STRUCTURE
C++ - - - Anyone Paid National
GO BSD Y 6 NA NA NA
JAVA GPL - - Anyone Free/Paid Special
KOTLIN - Y - NA NA NA
PHP - - 12 NA NA NA
PYTHON Special Y 1 Anyone Special Special
R GPL - - NA NA NA
SCALA Apache Y - NA NA NA
Analysis
17. GPL
TRANSPARENCY MEMBERSHIP
LICENSE COC RC WHO HOW STRUCTURE
C++ - - - Anyone Paid National
GO BSD Y 6 NA NA NA
JAVA GPL - - Anyone Free/Paid Special
KOTLIN - Y - NA NA NA
PHP - - 12 NA NA NA
PYTHON Special Y 1 Anyone Special Special
R GPL - - NA NA NA
SCALA Apache Y - NA NA NA
Analysis
18. GPL
TRANSPARENCY MEMBERSHIP
LICENSE COC RC WHO HOW STRUCTURE
C++ - - - Anyone Paid National
GO BSD Y 6 NA NA NA
JAVA GPL - - Anyone Free/Paid Special
KOTLIN - Y - NA NA NA
PHP - - 12 NA NA NA
PYTHON Special Y 1 Anyone Special Special
R GPL - - NA NA NA
SCALA Apache Y - NA NA NA
Analysis
19. GPL
STRUCTURAL CHANGES IMPROVEMENTS
DMM
WHO WHAT HOW COORD. IMPL. WHO WHAT HOW COORD. IMPL.
C++ Member ISO Vote f2f f2f Anyone I - - - Committee
GO Google - - - - CLA I+PR Vote ML/GR/GH GR/GH Company
JAVA
Full
Member
JSR Vote email web OCA I Review ML / IT Jira Committee
KOTLIN - - - - - Anyone PR - GH GH Company
PHP Karma RFC Vote ML wiki Anyone I - ML / IT IT Community
PYTHON Anyone PEP Vote GH GH CLA PR Review IT/GH GH Community
R - - - - - Anyone I - ML/BZ BZ Committee
SCALA Anyone SIP Vote SIP PR Anyone PR Review GH GH Committee
Analysis
20. GPL
STRUCTURAL CHANGES IMPROVEMENTS
DMM
WHO WHAT HOW COORD. IMPL. WHO WHAT HOW COORD. IMPL.
C++ Member ISO Vote f2f f2f Anyone I - - - Committee
GO Google - - - - CLA I+PR Vote ML/GR/GH GR/GH Company
JAVA
Full
Member
JSR Vote email web OCA I Review ML / IT Jira Committee
KOTLIN - - - - - Anyone PR - GH GH Company
PHP Karma RFC Vote ML wiki Anyone I - ML / IT IT Community
PYTHON Anyone PEP Vote GH GH CLA PR Review IT/GH GH Community
R - - - - - Anyone I - ML/BZ BZ Committee
SCALA Anyone SIP Vote SIP PR Anyone PR Review GH GH Committee
Analysis
25. Conclusion
• Analyzed a set of GPLs to understand how their evolution processes are governed
• Built a feature model that describes the different governance models and enables
the selection and configuration of new governance models for future GPLs
• Illustrated our proposal for Java and discussed some future applications
What we have shown
What we want to do next
More
languages!
Deeper discussion in the language
community regarding the role
and importance of governance issues
Study how
languages
are used
Qualitative
study
26. Except where otherwise noted, content on this presentation is licensed under a Creative Commons Attribution 4.0 International license.
Thanks!
Javier L. Cánovas Izquierdo
jcanovasi@uoc.edu
@jlcanovas
Jordi Cabot
jordi.cabot@icrea.cat
@softmodeling
Editor's Notes
Evolution of GPLs is a highly technical activity that involve improvements on the language syntax, parsing, conformance and performance, among others.
As any (open source) software project, this evolution largely depends on the work of a community of developers and end-users of the language willing to contribute.
Little attention has been paid to better understand how the commnuity organizes itself to evolve the language
Ideally, the community organization should be transparent and explicitly explained in a set of governance rules, where each rule partially describes how to contribute to certain aspects of the language evolution and how decisions for the acceptance/rejection of such contributions are made.
Governance rules could be as simple as stating the project follows a BDFL model (i.e., a dictatorship model) or complex enough to model more democratic and participatory processes.
So far, little is known regarding the governance practices in current GPLs
Only half of the analyzed languages can be considered transparent according to the dimensions we analyzed
In particular, half of them provide a code of conduct file, where it is explained how to behave in the Project (in terms of how to contribute and communicate with the rest)
As a result, we think that these results set the entry barriers for future contibutions pretty high
Regarding the membership dimension, only three of them use membership levels:
C++, which clearly follows the regulations of ISO, you have to join the national committee to participate
Java, which has two levels, a free one where you can participate but, if you want to be able to vote, you have to pay
Python, which two levels as well, coredevelopers participating in improvements and councilmembers participating in the structural changes. The former via merits the latter via elections.