Concerning Governance
in programming languages
Programming languages

September 2020
Luis García Castro

Why am I here...

Introduction
LuisGC

Luis García Castro

Data Driven Architect & Engineer

ING Group

Twitter twitter.com/luiyo

GitHub github.com/LuisGC

LinkedIn linkedin.com/in/LuisGC


OpenStreetMap Foundation Proud member of the Free Software Foundation Europe

OpenStreetMap Profile Proud member of the Open Street Map Foundation



Impress.js Presentation made with the awesome Open Source tool Reveal.js

Table of contents
  • Legal, ethical and health aspects
    • Language Health: popularity, activity and evolution
    • Governance systems
    • Software licenses
    • Community value: size, relevance, diversity, ...

  • Comparing some of the main languages together
    • by public projects, by jobs posted, by SO activity, ...

  • Critical Analysis of some of the main languages
    • Java, C, C#, Python, PHP, JavaScript, Ruby, Perl, Groovy, Go, Rust, Clojure, Scala & Kotlin

  • Discuss!! ;-)

Legal, Ethical and Health aspects

Language popularity
Language Activity
language rankings in Q3 2020

Source: Redmonk.com (Q3 2020)

Language evolution
Java Code Evolution

Source: @fabianenardon at JavaOne 2015

Ecosystem evolution
Governance systems: BDFLs, Boards, ...
What is democracy

Source: Unknown (sorry)

Main Free Software Licenses
OSS Licenses

Source: Wikipedia

Community size and relevance
Community diversity

Comparing some of the
main languages together...

by repos created on Github
by jobs posted in LinkedIn (Spain)
# jobs posted on LinkedIn (in Spain)

Source: LinkedIn.com/jobs (Sep 2020)

by activity in StackOverflow
Activity in StackOverflow

Source: StackOverflow.com/tags (Sep 2020)

Critical Analysis
of some of the
main languages

Java

Designer Designed by James Gosling @ Sun Microsystems in 1995

License GNU GPL License (since 2007)


Release Last stable version: Java SE 14 (published in 17/03/2020)

  • Java 7 took 4,5 years, Java 8 took 3 years, Java 9 took 3,5 years... Since then there is a 6-month release cycle

Standard Standardized: de facto standard


Important Relevant aspects:

New JDK Release Model
C

Designer Designed by Dennis Ritchie @ Bell Labs in 1972

License GNU GPL License (since 2007)


Release Last stable version: C18 (published in June 2018)


Standard Standardized: since 1989 (ANSI C89, ISO C90, ISO C99, ISO C11, ISO C18)

  • the WG14 defines and improves the standard

Important Relevant aspects:

  • The WG14 membership is strictly managed by the Standards Authority, although the mailing list and meeting notes are public
  • C2X is in progress with no public release date
The first BDFL
C#

Designer Designed by a Microsoft team lead by Anders Hejlsberg in 2000

License Extremely different Licenses

  • Microsoft replaced in 2016 the proprietary .Net Framework with .NET Core (MIT License)
  • There is an almost complete open implementation by Xamarin: The Mono Project (MIT License)

Release Last stable version: v8.0 (published in 23/09/2019)


Standard Standardized: since 2000 (ECMA-334, ISO/IEC 23270:2018)

  • Microsoft still defines the standard and improves the language
  • The .NET Foundation supports open source in .NET in several ways

Important Relevant aspects:

  • Mono is a common choice for game engines: Unity, Godot,...
A revolutionary .NET 5 is expected in Nov 2020
.NET 5 Platform

Source: Introducing .NET 5 by Richard Lander, Program Manager .Net Team

Python

Designer Designed by Guido van Rossum in 1991

License Python Software Foundation License since 2001 (GPL compatible)


Release Last stable version: v3.8.5 (20/07/2020)


Standard Standardized: No


Important Relevant aspects:

Guido retired very recently
PHP

Designer Designed by Rasmus Lerdorf in 1995

License PHP License (not GPL compatible)


Release Last stable version: v7.4.10 (published in 03/09/2020)

  • Almost anyone can submit an RFC, but only past code contributors and selected representatives will participate in the decision

Standard Standardized: No


Important Relevant aspects:

The PHP Community
PHP User Groups

Source: php.ug

JavaScript

Designer Designed by Brendan Eich @ Netscape in 1995

License Rhino has MPL license, V8 has BSD license


Release Last stable version: ECMAScript 2020 (published in June 2020)


Standard Standardized: since 1997 (ECMA 262)

  • The TC39 Group defines and improves the standard

Important Relevant aspects:

is the JS Framework fatigue slowing down?
JS Framework downloads in the last 5 years

Source: npmtrends.com (Sep 2020)

Ruby

Designer Designed by Yukihiro "Matz" Matsumoto in 1995

License Ruby License and GPLv2


Release Last stable version: v2.7.1 (published in 31/03/2020)


Standard Standardized: since 2011 (JIS X 3017)

  • Last change in the standard was in 2012 (ISO/IEC 30170)

Important Relevant aspects:

Why's (Poignant) Guide to Ruby
Perl

Designer Designed by Larry Wall @ Unisys in 1987

License GNU GPL License


Release Last stable version: v5.32.0 (published in 20/06/2020)

  • Perl 5 is actively maintained and developed by volunteers.

Standard Standardized: No


Important Relevant aspects:

  • Perl 6, announced in 2015, was renamed to Raku in Oct 2019
  • "In Perl 6, we decided it would be better to fix the language than fix the user" --Larry Wall about Perl6
  • The Perl community rocks: Lingua::Romana::Perligata module, Perl Poetry, ...
Camelia, the Raku mascot
Camelia, the Raku mascot

Source: Wikimedia

Apache Groovy

Designer Designed by James Strachan in 2003

License Apache License v2.0 (since 2015)


Release Last stable version: v3.0.5 (published in 19/07/2020)


Standard Standardized: No

  • JCP's JSR 241 is dormant since 2012

Important Relevant aspects:

The Groovy & Grails community
Micronaut

Source: micronaut.io

Go

Designer Designed by Robert Griesemer, Rob Pike and Ken Thompson @ Google in 2009

License BSD-style license


Release Last stable version: v1.15 (published in 11/08/2020)

  • Griesemer, Pike and Thompson spent 2 years full time designing the basics
  • Now the Go community defines and improves the language

Standard Standardized: De facto standard via Go Language Specification


Important Relevant aspects:

community-driven vs corporate ownership
Rust

Designer Designed by Graydon Hoare @ Mozilla in 2010

License Apache License v2.0


Release Last stable version: v1.46.0 (published in 27/08/2020)

  • Rust has a community-driven development process under the steering of a 'core team' with the main comitters (mostly from Mozilla)

Standard Standardized: No


Important Relevant aspects:

Will Rust survive without Mozilla?
Clojure

Designer Designed by Rich Hickey in 2007

License Eclipse Public License


Release Last stable version: v1.10.1 (published in 06/06/2019)

  • Clojure is developed by a core team from Cognitect (where Hickey is CTO)
  • The process is not fully closed, but it's extremely conservative

Standard Standardized: No


Important Relevant aspects:

  • Clojure is owned by Rich Hickey, and it totally depends on Cognitect resources
  • There is an underlying dissatisfaction with the contribution process (example from Nov 2018), but most of the community is grateful anyway
BaaB (BDFL as a Bottleneck)
Scala

Designer Designed by Martin Odersky in 2004

License Apache License 2.0


Release Last stable version: v2.13.3 (published in 25/06/2020)


Standard Standardized: De facto standard via Scala Language Specification (SLS)


Important Relevant aspects:

  • The Scala Center focuses on education, Lightbend also in commercial support and services
  • Dotty vs Cats/Circe vs scalaz vs Zio
A Civil War around John de Goes
Kotlin

Designer Designed by JetBrains in 2011

License Apache License 2.0


Release Last stable version: v1.4.10 (published in 10/09/2020)

  • Sponsored and developed mainly by JetBrains, with contributions by Google
  • Kotlin 1.0 was released in 2016

Standard Standardized: No


Important Relevant aspects:

Google Adopted Kotlin for Android
Communities and gatherings near Madrid
Akwnoledgements
Bibliography
Thank you !!


Luis García Castro
@luiyo


More in luiyo.net/talks
Creative Commons Creative Commons CC-BY-SA