Analysis and modeling of the governance in general programming languages

General Programming Languages (GPLs) continuously evolve to adapt to the ever changing technology landscape. The evolution is rooted on technical aspects but it is ultimately decided by the group of people governing the language and working together to solve, vote and approve the new language extensions and modifications. As in any community, governance rules are used to manage the community, help to prioritize their tasks and come to a decision. Typically, these rules specify the decision-making mechanism used in the project, thus contributing to its long-term sustainability by clarifying how core language developers (external contributors and even end-users of the language) can work together. Despite their importance, this core topic has been largely ignored in the study of GPLs. In this paper we study eight well-known GPLs and analyze how they govern their evolution. We believe this study helps to clarify the different approaches GPLs use in this regard. These governance models, depicted as a feature model, can then be reused and mixed by developers of new languages to define their own governance.

[1]  Shriram Krishnamurthi,et al.  Can we crowdsource language design? , 2017, Onward!.

[2]  Austen Rainer,et al.  Investigating developers' email discussions during decision-making in Python language evolution , 2017, EASE.

[3]  Sunita Chulani,et al.  Software development governance and its concerns , 2008, SDG '08.

[4]  Jordi Cabot,et al.  The Role of Foundations in Open Source Projects , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Society (ICSE-SEIS).

[5]  Robert E. Kraut,et al.  Coordination in software development , 1995, CACM.

[6]  Rajesh Krishna Balan,et al.  Towards governance schemes for distributed software development projects , 2008, SDG '08.

[7]  Brian A. Malloy,et al.  An empirical analysis of the transition from Python 2 to Python 3 , 2018, Empirical Software Engineering.

[8]  Jordi Cabot,et al.  Enabling the Definition and Enforcement of Governance Rules in Open Source Systems , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[9]  Jordi Cabot,et al.  Model-Driven Software Engineering in Practice , 2017, Synthesis Lectures on Software Engineering.

[10]  Gail Ridley,et al.  Attempting to Define IT Governance: Wisdom or Folly? , 2006, Proceedings of the 39th Annual Hawaii International Conference on System Sciences (HICSS'06).

[11]  M. Markus The governance of free/open source software projects: monolithic, multidimensional, or configurational? , 2007 .

[12]  Jan Vitek,et al.  Evaluating the Design of the R Language - Objects and Functions for Data Analysis , 2012, ECOOP.

[13]  James D. Herbsleb,et al.  Splitting the organization and integrating the code: Conway's law revisited , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[14]  Kevin Crowston,et al.  Coordination of Free/Libre Open Source Software Development , 2005, ICIS.

[15]  Reinhard Riedl,et al.  Top-level decisions through public deliberation on the internet: evidence from the evolution of Java governance , 2009, D.GO.

[16]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[17]  Robert N. M. Watson,et al.  Into the depths of C: elaborating the de facto standards , 2016, PLDI.

[18]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[19]  Bastin Tony Roy Savarimuthu,et al.  Exploring decision-making processes in Python , 2016, EASE.

[20]  W. V. Grembergen Strategies for Information Technology Governance , 2003 .