Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Programming languages

Concerning Governance
in programming languages

November 2015
Luis García Castro

Introduction

Luis García Castro

Software Engineer @ Sopra Steria


Twitter twitter.com/luiyo

Google Plus plus.google.com/+LuisGarcíaCastro

LinkedIn linkedin.com/in/LuisGC

GitHub github.com/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 Impress.js

Why am I here...


Thinking

Original idea and disclaimers first...

Table of contents
  • Important aspects of governance
    • Governance systems
    • Software licenses
    • Community value: size, relevance, diversity, ...
    • Language Health: presence, activity and evolution

  • Analysis of some languages
    • Java, C, C#, Python, PHP, JavaScript, Ruby, Perl,
      Groovy, Go, Rust and Clojure

  • Comparing them together...
    • by public projects, by jobs posted, by SO activity,
      by corporate interest, ...

  • My own Magic Quadrant

  • Discuss!! ;-)
Important aspects of governance
What's democracy

Original Source: unknown (sorry)

This aspects are related to the Governance itself, but also to the community and the language general health

Governance systems: BDFLs vs Boards


Benevolent dictators

Source: teaparty.org

BDFLs

  • Dennis Ritchie* in C
  • Guido van Rossum in Python
  • Yukihiro Matsumoto* in Ruby
  • Larry Wall in Perl
  • Rich Hickey in Clojure
Main Free Software Licenses

Some licenses are no copy left compatible:

  • GPL: FSF yes, copyleft Yes
  • BSD: FSF yes, GPL compatible NO, copyleft No
  • MIT: FSF yes, GPL compatible yes, copyleft No
  • AL: FSF yes, GPL compatible yes, copyleft No
  • MPL: FSF yes, GPL compatible yes, copyleft Partial
Community size and relevance
Community diversity

Attributes: age, culture, ethnicity, gender identity or expression, national origin, physical or mental difference, politics, race, religion, sex, sexual orientation, socio-economic status, and subculture.

Source: python.org

Language Health
language rankings in the 2015 Q3

Source: Redmonk.com

Language popularity

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors

Public presence (and activity)
GitHut ranking 2014 Q4

Source: githut.info

Language evolution
Java Code Evolution

Source: @fabianenardon at JavaOne 2015

    Java 1: 1997

    Java 5: 2004

    Java 8: 2014

Let's analyze
some of the main languages


Nervous

For each of them we'll review:

  • Designer and year of birth
  • License
  • Last stable version
  • Standardized and governance system
  • Relevant aspects
Java
  • Designed by James Gosling @ Sun Microsystems in 1995
  • GNU GPL License (since 2007)

  • Last stable version: v1.8 (published in 18/03/2014)

  • Standardized: de facto standard

  • Relevant aspects:

Source: Wikipedia

A de facto standard is a custom, convention, product, or system that has achieved a dominant position by public acceptance or market forces (such as early entrance to the market)

JCP Timeline
C
  • Designed by Dennis Ritchie @ Bell Labs in 1972
  • GNU GPL License (since 2007)

  • Last stable version: C11 (published in 08/12/2011)

  • Standardized: since 1989 (ANSI C89, ISO C90, ISO C99, ISO C11)
    • the WG14 defines and improves the standard

  • Relevant aspects:
    • The WG14 membership is unclear
    • One of the oldest, but still evolving! :-)

Source: Wikipedia

...

Dennis Ritchie FTW
Dennis Ritchie

Original Source: unknown (sorry)

Dennis Ritchie started as BDFL but ceded control to the Working Group

Notable work

  • C (with Brian Kernighan)
  • Unix (with Ken Thompson)
  • Unix Programmer's Manual (1971)
  • The C Programming Language or K&R (1978)
C#
  • Designed by a Microsoft team lead by Anders Hejlsberg in 2000
  • The CLR (Common Language Runtime) is proprietary but thanks to The Mono Project there is a Free and Open implementation* by Miguel de Icaza @ Ximian since 2004

  • Last stable version: v6.0 (published in 20/07/2015)

  • Standardized: since 2000 (ECMA-334, ISO/IEC 23270:2006)
    • Microsoft defines the standard and improves the language

  • Relevant aspects:
    • Microsoft is leading the development of a new Open Source C# compiler, codenamed Rosylin

Source: Wikipedia

  • Microsoft tried first with a non standard implementation of Java... but finally desisted
  • The Mono Project
    The Mono Project

    Mono provides an Open Source compiler, but does not cover all since v4.0

    Without any official support and despite potential legal issues hanging over their heads, they pushed forward and created an incredibly capable alternative to the official runtime implementation

    Python
    • Designed by Guido van Rossum in 1991
    • Python Software Foundation License (since 2001)

    • Last stable version: v3.5.0 / v2.7.10 (published in 13/09/2015 and 23/05/2015 respectively)

    • Standardized: No

    • Relevant aspects:
      • Python is driven by its community, almost everything is discussed in the mailing list
      • CPython, the reference implementation, is written in C, but there is another interpreter (PyPy) written in RPython

    Source: Wikipedia

    Pypy survives with public fundings and private donations. The port to ARM architecture was sponsored in part by the Raspberry Pi Foundation

    RPython (Restricted Python)

    The Zen of Python

    A common neologism in the Python community is pythonic

    An important goal of the Python developers is making Python fun to use

    PHP

    Source: Wikipedia

    You can always fork PHP from github

    The PHP Community
    PHP User Groups

    Source: php.ug

    Facebook, Wordpress

    JavaScript
    • Designed by Brendan Eich @ Netscape in 1995
    • Rhino has MPL license, V8 has BSD license

    • Last stable version: ECMAScript 6 (published in 17/06/2015)

    • Standardized: since 1997 (ECMA 262)
      • The TC39 Group defines and improves the standard

    • Relevant aspects:

    Source: Wikipedia

    Choose your JS flavour... till it stales

    ...

    Ruby
    • Designed by Yukihiro "Matz" Matsumoto in 1995
    • Ruby License and GPLv2

    • Last stable version: v2.2.3 (published in 18/08/2015)

    • Standardized: since 2011 (JIS X 3017, ISO/IEC 30170)
      • The Ruby Core is improved by its community

    • Relevant aspects:
      • Commit rights are (apparently) obtained by merits,
        but Matz's approval is always required

    Source: Wikipedia

    Why's (Poignant) Guide to Ruby

    Why’s (Poignant) Guide to Ruby is released under the Attribution-ShareAlike License.

    Perl
    • Designed by Larry Wall @ Unisys in 1987
    • GNU GPL License

    • Last stable version: v5.22.0 (published in 01/06/2015)

    • Standardized: No
      • Perl 5 is actively maintained and developed by a large group of dedicated volunteers.
      • Perl 6 will be a brand new language, scheduled for release by the end of 2015

    • Relevant aspects:

    Source: Wikipedia

    TIMTOWTDI

    There's more than one way to do it (pronounced Tim Toady)

    Groovy

    Source: Wikipedia

    Apache Groovy

    ...

    Go
    • Designed by Robert Griesemer, Rob Pike and
      Ken Thompson
      @ Google in 2009
    • BSD-style license

    • Last stable version: v1.5.1 (published in 08/09/2015)

    • Standardized: No
      • The Go community defines and improves the language

    • Relevant aspects:
      • Community driven, but with major support (and some control) by Google
      • Griesemer, Pike and Thompson had the luxury to spend 2 years designing the basics

    Source: Wikipedia

    Issue #9

    Remark the amount of comments in favour of Francis McCabe

    Rust
    • Designed by Graydon Hoare @ Mozilla in 2010
    • Apache License v2.0

    • Last stable version: v1.4 (published in 29/10/2015)

    • Standardized: No
      • Rust has a community-driven development process where most decisions are made through consensus, under the stewardship of a 'core team' with the main comitters

    • Relevant aspects:
      • Rust grew out of a personal project, Mozilla began sponsoring the project in 2009 and announced it in 2010
      • The RFC process itself has been discussed publicly through public RFCs. Last one is Scaling Rust's Governance #1068

    Source: Wikipedia

    Mozilla Foundation
    Mozilla Foundation

    Source: mozilla.org

    Principles

    1. The Internet is an integral part of modern life—a key component in education, communication, collaboration, business, entertainment and society as a whole.
    2. The Internet is a global public resource that must remain open and accessible.
    3. The Internet must enrich the lives of individual human beings.
    4. Individuals’ security and privacy on the Internet are fundamental and must not be treated as optional.
    5. Individuals must have the ability to shape the Internet and their own experiences on the Internet.
    6. The effectiveness of the Internet as a public resource depends upon interoperability (protocols, data formats, content), innovation and decentralized participation worldwide.
    7. Free and open source software promotes the development of the Internet as a public resource.
    8. Transparent community-based processes promote participation, accountability and trust.
    9. Commercial involvement in the development of the Internet brings many benefits; a balance between commercial profit and public benefit is critical.
    10. Magnifying the public benefit aspects of the Internet is an important goal, worthy of time, attention and commitment.
    Clojure
    • Designed by Rich Hickey in 2007
    • Eclipse Public License

    • Last stable version: v1.7 (published in 30/06/2015)

    • Standardized: No
      • The current development process is community-driven, overseen by Rich Hickey as its BDFL

    • Relevant aspects:
      • The Clojure Contributor Agreement gives Rich Hickey and the contributor joint copyright interests in the code
      • Clojure is owned by Rich Hickey

    Source: Wikipedia

    BaaB (BDFL as a Bottleneck)

    Remark the green steps with Rich's approval

    Communities and gatherings near here

    Comparing them together...


    Excited minions
    by projects created on Github since 2010
    by jobs posted on Indeed.com
    # jobs posted on Indeed.com

    Source: Indeed.com/jobs

    by jobs posted in LinkedIn (in Spain)

    Impossible to obtain data about C, C# or Go

    by activity in StackOverflow
    by corporate interest
    • #1 . . . Java
    • #2 . . . Javascript
    • #3 . . . Python
    • #4 . . . C
    • #5 . . . PHP
    • ...

    • #7 . . . Ruby
    • #8 . . . C#
    • #9 . . . Perl
    • ...

    • #15 . . . Clojure
    • ...

    • #20 . . . Groovy
    • ...

    • #24 . . . Go

    Rust is not even there

    My own...
    Magic Quadrant


    Holy Shit!

    Ethics Parameters

    • Governance transparency
    • Freedom & Independency
    • License
    • Community relevance
    • Efforts to diversity

    Health Parameters

    • Language Popularity (TIOBE)
    • Public presence (Github)
    • Language evolution
    • Maturity
    • Expected tendency
    Magic Quadrant
    Magic Quadrant

    Source: lots of data + biased opinions

    Ethics Parameters

    • Governance transparency
    • Freedom & Independency
    • License
    • Community relevance
    • Efforts to diversity

    Health Parameters

    • Language Popularity (TIOBE)
    • Public presence (Github)
    • Language evolution
    • Maturity
    • Expected tendency
    Akwnoledgements
    Bibliography

    Ask me anything !!

    Thank you

    Luis García Castro - @luiyo

    Creative Commons Creative Commons CC-BY-SA