Concerning Governance
in programming languages
Programming languages

November 2019
Luis García Castro

Why am I here...

Introduction
LuisGC

Luis García Castro

Data Driven Architect

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
  • Important aspects of Governance
    • 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 those languages
    • Java, C, C#, Python, PHP, JavaScript, Ruby, Perl, Groovy, Go, Rust, Clojure, Scala & Kotlin

  • My own Magic Quadrant

  • Discuss!! ;-)

Important aspects of
Governance

Language popularity
Language Activity
language rankings in Q3 2019

Source: Redmonk.com (Q3 2019)

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 (Nov 2019)

by activity in StackOverflow
Activity in StackOverflow

Source: StackOverflow.com/tags (Nov 2019)

Critical Analysis
of those languages

Java

Designer Designed by James Gosling @ Sun Microsystems in 1995

License GNU GPL License (since 2007)


Release Last stable version: Java SE 13 (published in 21/08/2019)

  • 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 unclear
  • One of the oldest, but still evolving (slowly)!
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
  • Microsoft has agreed not to sue open source developers, under certain conditions

Important Relevant aspects:

  • Mono is a common choice for game engines: Unity, Godot,...
A revolutionary .NET 5 arrives in 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.0 (14/10/2019) / v2.7.17 (19/10/2019)


Standard Standardized: No


Important Relevant aspects:

  • Python is driven by its community, and everything is discussed in the main mailing list and the Work Groups
  • PEP 373, that describes the End Of Life date for Python 2.7, moved the EOL to 2020
  • PEP 404 even describes the un-development and un-release schedule for Python 2.8
Guido just retired
PHP

Designer Designed by Rasmus Lerdorf in 1995

License PHP License (not GPL compatible)


Release Last stable version: v7.3.12 (published in 21/11/2019)

  • 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 2019 (published in June 2019)


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 fatigue

Source: cube-drone.com

Ruby

Designer Designed by Yukihiro "Matz" Matsumoto in 1995

License Ruby License and GPLv2


Release Last stable version: v2.6.5 (published in 01/10/2019)


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.30.1 (published in 10/11/2019)

  • Perl 5 is actively maintained and developed by volunteers.

Standard Standardized: No


Important Relevant aspects:

  • "In Perl 6, we decided it would be better to fix the language than fix the user" --Larry Wall about Perl6
  • Perl 6, announced in 2015, was renamed to Raku in Oct 2019
  • 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: v2.5.8 (published in 02/08/2019)


Standard Standardized: No

  • JCP's JSR 241 is dormant since 2012

Important Relevant aspects:

A framework for the future, now
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.13.4 (published in 31/10/2019)

  • 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, but with major support (and some control) by Google
Leader in Infrastructure as Code
Gopher and Docker

Source: Hackernoon.com

Rust

Designer Designed by Graydon Hoare @ Mozilla in 2010

License Apache License v2.0


Release Last stable version: v1.39 (published in 07/11/2019)

  • 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:

Mozilla Pledge for a Healthy Internet
Mozilla Foundation Pledge

Source: moz://a.org

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) and Rich Hickey needs to approve everything
  • 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.1 (published in 11/06/2019)


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 is starting around John de Goes
Kotlin

Designer Designed by JetBrains in 2011

License Apache License 2.0


Release Last stable version: v1.3.60 (published in 18/09/2019)

  • 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

And finally my own...
Magic Quadrant!!

Magic Quadrant
Magic Quadrant

Source: lots of data + biased opinions

Communities and gatherings near here
Akwnoledgements
Bibliography
Thank you !!



Luis García Castro
@luiyo


Creative Commons Creative Commons CC-BY-SA